21 using namespace zypp::parser;
22 using namespace zypp::parser::susetags;
31 Downloader::Downloader(
const RepoInfo &repoinfo,
const Pathname &delta_dir )
32 : repo::
Downloader(repoinfo), _delta_dir(delta_dir)
41 Pathname mediafile = media.
provideFile(
"/media.1/media" );
49 Pathname deltafile(dir + file.basename());
50 if (PathInfo(deltafile).isExist())
58 const Pathname &dest_dir,
63 Pathname masterIndex(
repoInfo().path() /
"/content" );
68 Pathname inputfile( dest_dir / masterIndex );
71 content.
parse( inputfile );
84 WAR <<
"No signing keys defined." << endl;
91 std::map<std::string,RepoIndex::FileChecksumMap::const_iterator> availablePackageTranslations;
98 static const str::regex rx_packages(
"^packages((.gz)?|(.([^.]*))(.gz)?)$" );
106 else if ( what[4] ==
"FL" )
111 availablePackageTranslations[what[4]] = it;
118 else if ( it->first ==
"patterns.pat"
119 || it->first ==
"patterns.pat.gz" )
133 std::vector<std::string> patparts;
134 unsigned archpos = 2;
136 unsigned count =
str::split( it->first, std::back_inserter(patparts),
"." );
137 if ( patparts[count-1] ==
"gz" )
140 if ( count > archpos )
144 Arch patarch( patparts[count-archpos] );
148 MIL <<
"Discarding pattern " << it->first << endl;
154 WAR <<
"Pattern file name does not contain recognizable architecture: " << it->first << endl;
159 MIL <<
"adding job " << it->first << endl;
167 auto fnc_checkTransaltions( [&](
const Locale & locale_r ) {
170 auto it( availablePackageTranslations.find( toGet.code() ) );
171 if ( it != availablePackageTranslations.end() )
173 auto mit( it->second );
174 MIL <<
"adding job " << mit->first << endl;
184 fnc_checkTransaltions( it );
192 if ( it->first !=
"license.tar.gz" )
195 MIL <<
"adding job " << it->first << endl;
203 MIL <<
"adding job " << it->first << endl;
209 start( dest_dir, media );
214 MIL <<
"Consuming repo index" << endl;
std::string asString(const Patch::Category &obj)
void defaultDownloadMasterIndex(MediaSetAccess &media_r, const Pathname &destdir_r, const Pathname &masterIndex_r)
Common workflow downloading a (signed) master index file.
bool compatibleWith(const Arch &targetArch_r) const
Compatibility relation.
#define ZYPP_THROW(EXCPT)
Drops a logline and throws the Exception.
static ZConfig & instance()
Singleton ctor.
void downloadMediaInfo(const Pathname &dest_dir, MediaSetAccess &media, const ProgressData::ReceiverFnc &progressrcv)
Downloads the media info (/media.1) to a local directory.
What is known about a repository.
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
const RepoInfo & repoInfo() const
function< bool(const ProgressData &)> ReceiverFnc
Most simple version of progress reporting The percentage in most cases.
void enqueueDigested(const OnMediaLocation &resource, const FileChecker &checker=FileChecker(), const Pathname &deltafile=Pathname())
Enqueue a object for transferal, they will not be transferred until start() is called.
Locale fallback() const
Return the fallback locale for this locale, if no fallback exists the empty Locale::noCode.
unsigned split(const C_Str &line_r, TOutputIterator result_r, const C_Str &sepchars_r=" \t")
Split line_r into words.
LocaleSet repoRefreshLocales() const
List of locales for which translated package descriptions should be downloaded.
Parse repoindex part from a content file.
void start(const Pathname &dest_dir, MediaSetAccess &media, const ProgressData::ReceiverFnc &progress=ProgressData::ReceiverFnc())
start the transfer to a destination directory dest_dir You have to provde a media set access media to...
void setRepoIndexConsumer(const RepoIndexConsumer &fnc_r)
Consumer to call when repo index was parsed.
bool endsWith(const C_Str &str_r, const C_Str &prefix_r)
alias for hasSuffix
'Language[_Country]' codes.
Regular expression match result.
Base class for Exception.
bool regex_match(const std::string &s, smatch &matches, const regex ®ex)
regex ZYPP_STR_REGEX regex ZYPP_STR_REGEX
Track changing files or directories.
Arch systemArchitecture() const
The system architecture zypp uses.
function< void(const Pathname &file)> FileChecker
Functor signature used to check files.
bool hasPrefix(const C_Str &str_r, const C_Str &prefix_r)
Return whether str_r has prefix prefix_r.
virtual void parse(const InputStream &imput_r, const ProgressData::ReceiverFnc &fnc_r=ProgressData::ReceiverFnc())
Parse the stream.