zypper port starts. zypp2 to zypp
[platform/upstream/libzypp.git] / devel / devel.ma / Parse.cc
index b949337..2556a71 100644 (file)
 #include "zypp/parser/tagfile/TagFileParser.h"
 #include "zypp/parser/TagParser.h"
 #include "zypp/parser/susetags/PackagesFileReader.h"
+#include "zypp/parser/susetags/PackagesLangFileReader.h"
+#include "zypp/parser/susetags/PatternFileReader.h"
+#include "zypp/parser/susetags/ContentFileReader.h"
+#include "zypp/parser/susetags/RepoIndex.h"
+
+#include "zypp/parser/susetags/RepoParser.h"
+#include "zypp/cache/CacheStore.h"
 
 using namespace std;
 using namespace zypp;
@@ -119,117 +126,69 @@ std::ostream & operator<<( std::ostream & str, const iostr::EachLine & obj )
 
 }
 
-#include "zypp/ProgressData.h"
-
 ///////////////////////////////////////////////////////////////////
 namespace zypp
 { /////////////////////////////////////////////////////////////////
+  /////////////////////////////////////////////////////////////////
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
 
-  ///////////////////////////////////////////////////////////////////
-  namespace parser
-  { /////////////////////////////////////////////////////////////////
-   ///////////////////////////////////////////////////////////////////
-    namespace susetags
-    { /////////////////////////////////////////////////////////////////
+using namespace zypp::parser::susetags;
+#include "zypp/cache/CacheStore.h"
 
-      bool exampleReceiver( ProgressData::value_type v )
-      {
-       WAR << "got ->" << v << endl;
-       return( v <= 100 ); // Abort if ( v > 100
-      }
+void consumeIndex( const parser::susetags::RepoIndex_Ptr & index_r )
+{
+  SEC << "[Index]" << index_r << endl;
+}
 
-      class Example
-      {
-       public:
-
-         Example( const ProgressData::ReceiverFnc & fnc_r = ProgressData::ReceiverFnc() )
-         : _fnc( fnc_r )
-         {}
-
-         void SendTo( const ProgressData::ReceiverFnc & fnc_r )
-         { _fnc = fnc_r; }
-
-       public:
-
-         void action()
-         {
-           ProgressData tics( 10 );    // Expect range 0 -> 10
-           tics.name( "test ticks" );  // Some arbitrary name
-           tics.sendTo( _fnc );        // Send reports to _fnc
-           tics.toMin();               // start sending min (0)
-
-           for ( int i = 0; i < 10; ++i )
-           {
-             if ( ! tics.set( i ) )
-               return; // user requested abort
-           }
-
-           tics.toMax(); // take care 100% are reported on success
-         }
-
-         void action2()
-         {
-           ProgressData tics;          // Just send 'still alive' messages
-           tics.name( "test ticks" );  // Some arbitrary name
-           tics.sendTo( _fnc );        // Send reports to _fnc
-           tics.toMin();               // start sending min (0)
-
-           for ( int i = 0; i < 10; ++i )
-           {
-             if ( ! tics.set( i ) )
-               return; // user requested abort
-           }
-
-           tics.toMax(); //
-         }
-
-       private:
-         ProgressData::ReceiverFnc _fnc;
-      };
-
-
-      //ProgressData makeProgressData( const InputStream & input_r )
-      //{
-      //  ProgressData ret;
-      //  ret.name( input_r.name() );
-      //  if ( input_r.size() > 0 )
-      //    ret.range( input_r.size() );
-      //  return ret;
-      //}
-
-      void simpleParser( const InputStream & input_r,
-                        const ProgressData::ReceiverFnc & fnc_r = ProgressData::ReceiverFnc() )
-      {
-       ProgressData ticks( makeProgressData( input_r ) );
-       ticks.sendTo( fnc_r );
-       ticks.toMin(); // start sending min (0)
+void consumeProd( const data::Product_Ptr & prod_r )
+{
+  SEC << "[Prod]" << prod_r << endl;
+}
 
-       iostr::EachLine line( input_r );
-       for( ; line; line.next() )
-       {
-         /* process the line */
+void consumePkg( const data::Package_Ptr & pkg_r )
+{
+  //MIL << "[Pkg]" << pkg_r << endl;
+}
 
-         if ( ! ticks.set( input_r.stream().tellg() ) )
-           return; // user requested abort
-       }
+void consumeSrcPkg( const data::SrcPackage_Ptr & pkg_r )
+{
+  //DBG << "[Src]" << pkg_r << endl;
+}
 
-       ticks.toMax(); // take care 100% are reported on success
-      }
+void consumePat( const data::Pattern_Ptr & pat_r )
+{
+  MIL << "[Pat]" << pat_r << endl;
+}
 
+void pPackages( const Pathname & p )
+{
+  Measure x( p.basename() );
+  PackagesFileReader tp;
+  tp.setPkgConsumer( consumePkg );
+  tp.setSrcPkgConsumer( consumeSrcPkg );
+  tp.parse( p );
+}
 
-      /////////////////////////////////////////////////////////////////
-    } // namespace susetags
-    ///////////////////////////////////////////////////////////////////
-    /////////////////////////////////////////////////////////////////
-  } // namespace parser
-  ///////////////////////////////////////////////////////////////////
-  /////////////////////////////////////////////////////////////////
-} // namespace zypp
-///////////////////////////////////////////////////////////////////
+void pPackagesLang( const Pathname & p, const Locale & locale_r )
+{
+  Measure x( p.basename() );
+  PackagesLangFileReader tp;
+  tp.setLocale( locale_r );
+  tp.setPkgConsumer( consumePkg );
+  tp.setSrcPkgConsumer( consumeSrcPkg );
+  tp.parse( p );
+}
 
-using namespace zypp::parser::susetags;
+void pPattern( const Pathname & p )
+{
+  Measure x( p.basename() );
+  PatternFileReader tp;
+  tp.setConsumer( consumePat );
+  tp.parse( p );
+}
 
-/******************************************************************
+ /******************************************************************
 **
 **      FUNCTION NAME : main
 **      FUNCTION TYPE : int
@@ -239,47 +198,76 @@ int main( int argc, char * argv[] )
   //zypp::base::LogControl::instance().logfile( "log.restrict" );
   INT << "===[START]==========================================" << endl;
 
-  TagParser c;
-  c.parse( "packages.gz", exampleReceiver );
+  Pathname dbdir( "store" );
+  Pathname reporoot( "lmd" );
 
-  return ( 0 );
+  cache::CacheStore store( dbdir );
+  data::RecordId repositoryId = store.lookupOrAppendRepository( Url("dir:///"), "/" );
+  {
+    Measure x( "XXXXXXXXXXXXX" );
 
-  //Pathname p( "lmd/suse/setup/descr/packages" );
-  Pathname p( "packages" );
+    parser::susetags::RepoParser repo( repositoryId, store );
+    repo.parse( reporoot );
 
-  if ( 1 )
-  {
-    Pathname p( "packages" );
-    Measure x( p.basename() );
-    TagFileParser tp( (zypp::parser::ParserProgress::Ptr()) );
-    tp.parse( p );
+    store.commit();
   }
 
-  if ( 0 ) {
-    Pathname p( "p" );
-    Measure x( p.basename() );
-    PackagesFileReader tp;
-    tp.parse( p );
-  }
-  if ( 1 ) {
-    Pathname p( "p.gz" );
-    Measure x( p.basename() );
-    PackagesFileReader tp;
-    tp.parse( p );
-  }
-  if ( 1 ) {
-    Pathname p( "packages" );
-    Measure x( p.basename() );
-    PackagesFileReader tp;
-    tp.parse( p );
-  }
-  if ( 1 ) {
-    Pathname p( "packages.gz" );
-    Measure x( p.basename() );
-    PackagesFileReader tp;
-    tp.parse( p );
+
+#if 0
+  ContentFileReader tp;
+  tp.setProductConsumer( consumeProd );
+  tp.setRepoIndexConsumer( consumeIndex );
+  //tp.setSrcPkgConsumer( consumeSrcPkg );
+  tp.parse( p );
+
+
+  //try
+  {
+    //Pathname dbdir( "/Local/ma/zypp-TRUNK/BUILD/libzypp/devel/devel.ma/store" );
+
+
+    Pathname dbdir( "store" );
+    Pathname metadir( "lmd" );
+
+    cache::CacheStore store( dbdir );
+    data::RecordId repositoryId = store.lookupOrAppendRepository( Url("http://www.google.com"), "/" );
+
+    RepoParser( metadir, repositoryId, store );
+
   }
 
+    try
+    {
+      ZYpp::Ptr z = getZYpp();
+
+      Pathname dbfile( "data.db" );
+      cache::CacheStore store(getenv("PWD"));
+
+      data::RecordId repository_id = store.lookupOrAppendRepository( Url("http://www.google.com"), "/");
+
+      PackagesParser parser( repository_id, store);
+      Measure m;
+      parser.start(argv[1], &progress_function);
+      m.elapsed();
+    }
+    catch ( const Exception &e )
+    {
+      cout << "ups! " << e.msg() << std::endl;
+    }
+#endif
+
+  INT << "===[END]============================================" << endl << endl;
+  zypp::base::LogControl::instance().logNothing();
+  return 0;
+
+  Pathname proot( "lmd/suse/setup/descr" );
+
+  pPackages( proot/"packages" );
+  //pPackages( proot/"packages.gz" );
+  pPackagesLang( proot/"packages.de", Locale("de") );
+  //pPackagesLang( proot/"packages.de.gz", Locale("de") );
+  pPattern( proot/"base-10.3-30.x86_64.pat" );
+
   if ( 0 )
   {
     Measure x( "lmd.idx" );