| |
\---------------------------------------------------------------------*/
/** \file zypp2/parser/yum/RepoParser.cc
- * YUM parser implementation.
+ * YUM repository metadata parser implementation.
*/
#include <iostream>
Impl(
const data::RecordId & repository_id,
data::ResolvableDataConsumer & consumer,
+ const RepoParserOpts & options = RepoParserOpts(),
const ProgressData::ReceiverFnc & progress = ProgressData::ReceiverFnc()
);
/** Progress reporting object for overall YUM parser progress. */
ProgressData _ticks;
+
+ /** */
+ const RepoParserOpts & _options;
};
///////////////////////////////////////////////////////////////////////////
RepoParser::Impl::Impl(
const data::RecordId & repository_id,
data::ResolvableDataConsumer & consumer,
+ const RepoParserOpts & options,
const ProgressData::ReceiverFnc & progress)
:
- _repository_id(repository_id), _consumer(consumer)
+ _repository_id(repository_id), _consumer(consumer), _options(options)
{
_ticks.name("RepoParser");
_ticks.sendTo(progress);
// parse primary.xml.gz
case YUMResourceType::PRIMARY_e:
{
- zypp::parser::yum::PrimaryFileReader(
+ PrimaryFileReader(
cache_dir + job.filename(),
bind(&RepoParser::Impl::primary_CB, this, _1),
&progress_function);
case YUMResourceType::PATCHES_e:
{
- zypp::source::yum::PatchesFileReader(
+ source::yum::PatchesFileReader(
cache_dir + job.filename(),
bind(&RepoParser::Impl::patches_CB, this, _1, _2));
// reset progress reporter max value (number of jobs changed if
case YUMResourceType::PATCH_e:
{
- zypp::parser::yum::PatchFileReader(
+ PatchFileReader(
cache_dir + job.filename(),
bind(&RepoParser::Impl::patch_CB, this, _1));
break;
case YUMResourceType::OTHER_e:
{
- WAR << "ignoring other.xml.gz for now..." << endl;
- /*
- zypp::parser::yum::Impl::OtherFileReader(
- cache_dir + job.filename(),
- bind(&RepoParser::other_CB, this, _1, _2),
- &progress_function);
- */
+ if (!_options.skipOther)
+ {
+ OtherFileReader(
+ cache_dir + job.filename(),
+ bind(&RepoParser::Impl::other_CB, this, _1, _2),
+ &progress_function);
+ }
+ else
+ MIL << "skipping other.xml.gz";
break;
}
case YUMResourceType::FILELISTS_e:
{
- zypp::parser::yum::FilelistsFileReader(
- cache_dir + job.filename(),
- bind(&RepoParser::Impl::filelist_CB, this, _1, _2),
- &progress_function);
+ if (!_options.skipFilelists)
+ {
+ FilelistsFileReader(
+ cache_dir + job.filename(),
+ bind(&RepoParser::Impl::filelist_CB, this, _1, _2),
+ &progress_function);
+ }
+ else
+ MIL << "skipping filelists.xml.gz";
+
break;
}
case YUMResourceType::PATTERNS_e:
{
- zypp::parser::yum::PatternFileReader(
+ PatternFileReader(
cache_dir + job.filename(),
bind(&RepoParser::Impl::pattern_CB, this, _1));
break;
case YUMResourceType::PRODUCTS_e:
{
- zypp::parser::yum::ProductFileReader(
+ ProductFileReader(
cache_dir + job.filename(),
bind(&RepoParser::Impl::product_CB, this, _1));
break;
RepoParser::RepoParser(
const data::RecordId & repository_id,
data::ResolvableDataConsumer & consumer,
+ const RepoParserOpts & options,
const ProgressData::ReceiverFnc & progress)
:
- _pimpl(new Impl(repository_id, consumer, progress))
+ _pimpl(new Impl(repository_id, consumer, options, progress))
{}