5#include <zypp/base/LogTools.h>
6#include <zypp/base/Gettext.h>
7#include <zypp/base/String.h>
8#include <zypp/base/Regex.h>
9#include <zypp-core/OnMediaLocation>
15#include <zypp/repo/susetags/Downloader.h>
16#include <zypp-core/parser/ParseException>
18#include <zypp-core/base/UserRequestException>
31 : repo::
Downloader(repoinfo), _delta_dir(delta_dir)
66 Pathname inputfile( dest_dir / masterIndex );
69 content.
parse( inputfile );
82 WAR <<
"No signing keys defined." << endl;
89 std::map<std::string,RepoIndex::FileChecksumMap::const_iterator> availablePackageTranslations;
96 static const str::regex rx_packages(
"^packages((.gz)?|(.([^.]*))(.gz)?)$" );
104 else if ( what[4] ==
"FL" )
109 availablePackageTranslations[what[4]] = it;
116 else if ( it->first ==
"patterns.pat"
117 || it->first ==
"patterns.pat.gz" )
131 std::vector<std::string> patparts;
132 unsigned archpos = 2;
134 unsigned count =
str::split( it->first, std::back_inserter(patparts),
"." );
135 if ( patparts[count-1] ==
"gz" )
138 if ( count > archpos )
142 Arch patarch( patparts[count-archpos] );
146 MIL <<
"Discarding pattern " << it->first << endl;
152 WAR <<
"Pattern file name does not contain recognizable architecture: " << it->first << endl;
157 MIL <<
"adding job " << it->first << endl;
166 auto fnc_checkTransaltions( [&](
const Locale & locale_r ) {
169 auto it( availablePackageTranslations.find( toGet.code() ) );
170 if ( it != availablePackageTranslations.end() )
172 auto mit( it->second );
173 MIL <<
"adding job " << mit->first << endl;
184 fnc_checkTransaltions( it );
192 if ( it->first !=
"license.tar.gz" )
195 MIL <<
"adding job " << it->first << endl;
204 MIL <<
"adding job " << it->first << endl;
210 start( dest_dir, media );
215 MIL <<
"Consuming repo index" << endl;
bool compatibleWith(const Arch &targetArch_r) const
Compatibility relation.
Base class for Exception.
void start(const Pathname &dest_dir, const ProgressData::ReceiverFnc &progress=ProgressData::ReceiverFnc())
start the transfer to a destination directory dest_dir The media has to be provides with setMediaSetA...
void enqueueDigested(const OnMediaLocation &resource, const FileChecker &checker=FileChecker())
Enqueue a object for transferal, they will not be transferred until start() is called.
'Language[_Country]' codes.
Locale fallback() const
Return the fallback locale for this locale, if no fallback exists the empty Locale::noCode.
function< bool(const ProgressData &)> ReceiverFnc
Most simple version of progress reporting The percentage in most cases.
What is known about a repository.
Track changing files or directories.
bool empty() const
Whether the status is empty (empty checksum)
Arch systemArchitecture() const
The system architecture zypp uses.
static ZConfig & instance()
Singleton ctor.
LocaleSet repoRefreshLocales() const
List of locales for which translated package descriptions should be downloaded.
Wrapper class for stat/lstat.
std::string basename() const
Return the last component of this path.
Parse repoindex part from a content file.
virtual void parse(const InputStream &imput_r, const ProgressData::ReceiverFnc &fnc_r=ProgressData::ReceiverFnc())
Parse the stream.
void setRepoIndexConsumer(const RepoIndexConsumer &fnc_r)
Consumer to call when repo index was parsed.
const RepoInfo & repoInfo() const
void defaultDownloadMasterIndex(MediaSetAccess &media_r, const Pathname &destdir_r, const Pathname &masterIndex_r)
Common workflow downloading a (signed) master index file.
Regular expression match result.
void downloadMediaInfo(const Pathname &dest_dir, MediaSetAccess &media, const ProgressData::ReceiverFnc &progressrcv)
Downloads the media info (/media.1) to a local directory.
bool hasPrefix(const C_Str &str_r, const C_Str &prefix_r)
Return whether str_r has prefix prefix_r.
bool endsWith(const C_Str &str_r, const C_Str &prefix_r)
alias for hasSuffix
bool regex_match(const std::string &s, smatch &matches, const regex ®ex)
\relates regex \ingroup ZYPP_STR_REGEX \relates regex \ingroup ZYPP_STR_REGEX
unsigned split(const C_Str &line_r, TOutputIterator result_r, const C_Str &sepchars_r=" \t", const Trim trim_r=NO_TRIM)
Split line_r into words.
Easy-to use interface to the ZYPP dependency resolver.
function< void(const Pathname &file)> FileChecker
Functor signature used to check files.
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
#define ZYPP_THROW(EXCPT)
Drops a logline and throws the Exception.