libzypp 17.28.8
RepoManager.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
12#ifndef ZYPP_REPOMANAGER_H
13#define ZYPP_REPOMANAGER_H
14
15#include <iosfwd>
16#include <list>
17
18#include <zypp/base/PtrTypes.h>
19#include <zypp/base/Iterator.h>
20#include <zypp/base/Flags.h>
21
22#include <zypp/Pathname.h>
23#include <zypp/ZConfig.h>
24#include <zypp/RepoInfo.h>
26#include <zypp/repo/RepoType.h>
28#include <zypp/ServiceInfo.h>
29#include <zypp/RepoStatus.h>
30#include <zypp/ProgressData.h>
31
33namespace zypp
34{
35
47 std::list<RepoInfo> readRepoFile(const Url & repo_file);
48
54 {
66 RepoManagerOptions( const Pathname & root_r = Pathname() );
67
77 static RepoManagerOptions makeTestSetup( const Pathname & root_r );
78
86 bool probe;
94
97 };
98
99
100
106 {
107 friend std::ostream & operator<<( std::ostream & str, const RepoManager & obj );
108
109 public:
111 struct Impl;
112
114 typedef std::set<ServiceInfo> ServiceSet;
115 typedef ServiceSet::const_iterator ServiceConstIterator;
117
119 typedef std::set<RepoInfo> RepoSet;
120 typedef RepoSet::const_iterator RepoConstIterator;
122
123 public:
126 ~RepoManager();
127
129 {
133 };
134
136 {
139 };
140
143 {
146 };
148
150 typedef RefreshServiceFlags RefreshServiceOptions;
151
152
160 bool repoEmpty() const;
161 RepoSizeType repoSize() const;
165
167 std::list<RepoInfo> knownRepositories() const
168 { return std::list<RepoInfo>(repoBegin(),repoEnd()); }
169
171 RepoInfo getRepo( const std::string & alias ) const;
173 RepoInfo getRepo( const RepoInfo & info_r ) const
174 { return getRepo( info_r.alias() ); }
175
177 bool hasRepo( const std::string & alias ) const;
179 bool hasRepo( const RepoInfo & info_r ) const
180 { return hasRepo( info_r.alias() ); }
181
185 static std::string makeStupidAlias( const Url & url_r = Url() );
187
191 RepoStatus metadataStatus( const RepoInfo &info ) const;
192
200 };
201
257 const Url &url,
259
270 Pathname metadataPath( const RepoInfo &info ) const;
271
272
283 Pathname packagesPath( const RepoInfo &info ) const;
284
285
300 void refreshMetadata( const RepoInfo &info,
303
312 void cleanMetadata( const RepoInfo &info,
314
323 void cleanPackages( const RepoInfo &info,
325
329 RepoStatus cacheStatus( const RepoInfo &info ) const;
330
349 void buildCache( const RepoInfo &info,
352
365 void cleanCache( const RepoInfo &info,
367
373 bool isCached( const RepoInfo &info ) const;
374
375
385 void loadFromCache( const RepoInfo &info,
387
396
404 repo::RepoType probe( const Url & url, const Pathname & path ) const;
408 repo::RepoType probe( const Url & url ) const;
409
410
425 void addRepository( const RepoInfo &info,
427
440 void addRepositories( const Url &url,
447 void removeRepository( const RepoInfo & info,
449
459 void modifyRepository( const std::string &alias,
460 const RepoInfo & newinfo,
463 void modifyRepository( const RepoInfo & newinfo,
465 { modifyRepository( newinfo.alias(), newinfo, progressrcv ); }
466
480 RepoInfo getRepositoryInfo( const std::string &alias,
482
502 RepoInfo getRepositoryInfo( const Url & url,
505
506
519 bool serviceEmpty() const;
520
527
534
540
543
545 std::list<ServiceInfo> knownServices() const
546 { return std::list<ServiceInfo>(serviceBegin(),serviceEnd()); }
547
554 ServiceInfo getService( const std::string & alias ) const;
555
557 bool hasService( const std::string & alias ) const;
559
563 repo::ServiceType probeService( const Url &url ) const;
564
573 void addService( const std::string & alias, const Url& url );
574
582 void addService( const ServiceInfo & service );
583
592 void removeService( const std::string & alias );
594 void removeService( const ServiceInfo & service );
595
596
602 void refreshServices( const RefreshServiceOptions & options_r = RefreshServiceOptions() );
603
612 void refreshService( const std::string & alias, const RefreshServiceOptions & options_r = RefreshServiceOptions() );
614 void refreshService( const ServiceInfo & service, const RefreshServiceOptions & options_r = RefreshServiceOptions() );
615
632 void modifyService( const std::string & oldAlias, const ServiceInfo & service );
634 void modifyService( const ServiceInfo & service )
635 { modifyService( service.alias(), service ); }
636
637 private:
642 {
643 public:
644 MatchServiceAlias( const std::string & alias_ ) : alias(alias_) {}
645 bool operator()( const RepoInfo & info ) const
646 { return info.service() == alias; }
647 private:
648 std::string alias;
649 };
650
651 public:
652
685 template<typename OutputIterator>
686 void getRepositoriesInService( const std::string & alias,
687 OutputIterator out ) const
688 {
689 MatchServiceAlias filter(alias);
690
691 std::copy( boost::make_filter_iterator( filter, repoBegin(), repoEnd() ),
692 boost::make_filter_iterator( filter, repoEnd(), repoEnd() ),
693 out);
694 }
695
696 private:
699 };
700 ZYPP_DECLARE_OPERATORS_FOR_FLAGS(RepoManager::RefreshServiceFlags);
702
704 std::ostream & operator<<( std::ostream & str, const RepoManager & obj );
705
708 { return makeIterable( repoBegin(), repoEnd() ); }
709
712 { return makeIterable( serviceBegin(), serviceEnd() ); }
713
715} // namespace zypp
717#endif // ZYPP2_REPOMANAGER_H
function< bool(const ProgressData &)> ReceiverFnc
Most simple version of progress reporting The percentage in most cases.
Definition: ProgressData.h:139
What is known about a repository.
Definition: RepoInfo.h:72
std::string service() const
Gets name of the service to which this repository belongs or empty string if it has been added manual...
Definition: RepoInfo.cc:724
creates and provides information about known sources.
Definition: RepoManager.h:106
bool hasRepo(const std::string &alias) const
Return whether there is a known repository for alias.
ServiceSet::const_iterator ServiceConstIterator
Definition: RepoManager.h:115
void cleanCacheDirGarbage(const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
Remove any subdirectories of cache directories which no longer belong to any of known repositories.
friend std::ostream & operator<<(std::ostream &str, const RepoManager &obj)
void cleanMetadata(const RepoInfo &info, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
Clean local metadata.
bool serviceEmpty() const
Gets true if no service is in RepoManager (so no one in specified location)
bool hasService(const std::string &alias) const
Return whether there is a known service for alias.
RefreshCheckStatus
Possibly return state of checkIfRefreshMEtadata function.
Definition: RepoManager.h:196
@ REFRESH_NEEDED
refresh is needed
Definition: RepoManager.h:197
@ REPO_UP_TO_DATE
repository not changed
Definition: RepoManager.h:198
@ REPO_CHECK_DELAYED
refresh is delayed due to settings
Definition: RepoManager.h:199
RepoInfo getRepo(const RepoInfo &info_r) const
Definition: RepoManager.h:173
RepoSet::const_iterator RepoConstIterator
Definition: RepoManager.h:120
void addService(const std::string &alias, const Url &url)
Adds new service by it's alias and url.
bool isCached(const RepoInfo &info) const
Whether a repository exists in cache.
void removeService(const std::string &alias)
Removes service specified by its name.
bool hasRepo(const RepoInfo &info_r) const
Definition: RepoManager.h:179
RepoManager(const RepoManagerOptions &options=RepoManagerOptions())
RepoInfo getRepo(const std::string &alias) const
Find RepoInfo by alias or return RepoInfo::noRepo.
repo::ServiceType probeService(const Url &url) const
Probe the type or the service.
RWCOW_pointer< Impl > _pimpl
Pointer to implementation.
Definition: RepoManager.h:698
std::list< ServiceInfo > knownServices() const
List of known services.
Definition: RepoManager.h:545
void cleanCache(const RepoInfo &info, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
clean local cache
void refreshServices(const RefreshServiceOptions &options_r=RefreshServiceOptions())
Refreshes all enabled services.
void addRepository(const RepoInfo &info, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
Adds a repository to the list of known repositories.
bool repoEmpty() const
Pathname metadataPath(const RepoInfo &info) const
Path where the metadata is downloaded and kept.
ServiceSet::size_type ServiceSizeType
Definition: RepoManager.h:116
std::set< RepoInfo > RepoSet
RepoInfo typedefs.
Definition: RepoManager.h:119
Pathname packagesPath(const RepoInfo &info) const
Path where the rpm packages are downloaded and kept.
RepoStatus cacheStatus(const RepoInfo &info) const
Status of metadata cache.
void addRepositories(const Url &url, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
Adds repositores from a repo file to the list of known repositories.
void refreshMetadata(const RepoInfo &info, RawMetadataRefreshPolicy policy=RefreshIfNeeded, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
Refresh local raw cache.
void refreshService(const std::string &alias, const RefreshServiceOptions &options_r=RefreshServiceOptions())
Refresh specific service.
ServiceConstIterator serviceEnd() const
Iterator to place behind last service in internal storage.
RefreshServiceBit
Flags for tuning RefreshService.
Definition: RepoManager.h:143
@ RefreshService_forceRefresh
Force refresh even if TTL is not reached.
Definition: RepoManager.h:145
@ RefreshService_restoreStatus
Force restoring repo enabled/disabled status.
Definition: RepoManager.h:144
ServiceConstIterator serviceBegin() const
Iterator to first service in internal storage.
void modifyService(const ServiceInfo &service)
Definition: RepoManager.h:634
RepoSizeType repoSize() const
void modifyRepository(const std::string &alias, const RepoInfo &newinfo, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
Modify repository attributes.
Iterable< ServiceConstIterator > services() const
Iterate the known services.
Definition: RepoManager.h:711
void removeRepository(const RepoInfo &info, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
Remove the best matching repository from known repos list.
void modifyRepository(const RepoInfo &newinfo, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
Definition: RepoManager.h:463
RepoInfo getRepositoryInfo(const std::string &alias, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
Find a matching repository info.
ServiceSizeType serviceSize() const
Gets count of service in RepoManager (in specified location)
ZYPP_DECLARE_FLAGS(RefreshServiceFlags, RefreshServiceBit)
RepoSet::size_type RepoSizeType
Definition: RepoManager.h:121
ServiceInfo getService(const std::string &alias) const
Finds ServiceInfo by alias or return ServiceInfo::noService.
RefreshCheckStatus checkIfToRefreshMetadata(const RepoInfo &info, const Url &url, RawMetadataRefreshPolicy policy=RefreshIfNeeded)
Checks whether to refresh metadata for specified repository and url.
std::list< RepoInfo > knownRepositories() const
List of known repositories.
Definition: RepoManager.h:167
RepoConstIterator repoBegin() const
Iterable< RepoConstIterator > repos() const
Iterate the known repositories.
Definition: RepoManager.h:707
void buildCache(const RepoInfo &info, CacheBuildPolicy policy=BuildIfNeeded, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
Refresh local cache.
RefreshServiceFlags RefreshServiceOptions
Options tuning RefreshService.
Definition: RepoManager.h:150
void getRepositoriesInService(const std::string &alias, OutputIterator out) const
fill to output iterator repositories in service name.
Definition: RepoManager.h:686
void loadFromCache(const RepoInfo &info, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
Load resolvables into the pool.
std::set< ServiceInfo > ServiceSet
ServiceInfo typedefs.
Definition: RepoManager.h:111
void cleanPackages(const RepoInfo &info, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
Clean local package cache.
RepoConstIterator repoEnd() const
RepoStatus metadataStatus(const RepoInfo &info) const
Status of local metadata.
void modifyService(const std::string &oldAlias, const ServiceInfo &service)
Modifies service file (rewrites it with new values) and underlying repositories if needed.
static std::string makeStupidAlias(const Url &url_r=Url())
Some stupid string but suitable as alias for your url if nothing better is available.
repo::RepoType probe(const Url &url, const Pathname &path) const
Probe repo metadata type.
Track changing files or directories.
Definition: RepoStatus.h:41
Service data.
Definition: ServiceInfo.h:37
Url manipulation class.
Definition: Url.h:92
std::string alias() const
unique identifier for this source.
String related utilities and Regular expression matching.
std::ostream & copy(std::istream &from_r, std::ostream &to_r)
Copy istream to ostream.
Definition: IOStream.h:50
SolvableIdType size_type
Definition: PoolMember.h:126
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2
std::ostream & operator<<(std::ostream &str, const Exception &obj)
Definition: Exception.cc:147
std::list< RepoInfo > readRepoFile(const Url &repo_file)
Parses repo_file and returns a list of RepoInfo objects corresponding to repositories found within th...
Definition: RepoManager.cc:458
ZYPP_DECLARE_OPERATORS_FOR_FLAGS(DiskUsageCounter::MountPoint::HintFlags)
RW_pointer supporting 'copy on write' functionality.
Definition: PtrTypes.h:459
Repo manager settings.
Definition: RepoManager.h:54
std::string servicesTargetDistro
Target distro ID to be used when refreshing repo index services.
Definition: RepoManager.h:93
static RepoManagerOptions makeTestSetup(const Pathname &root_r)
Test setup adjusting all paths to be located below one root_r directory.
Definition: RepoManager.cc:487
Pathname rootDir
remembers root_r value for later use
Definition: RepoManager.h:96
Pathname repoPackagesCachePath
Definition: RepoManager.h:82
RepoManagerOptions(const Pathname &root_r=Pathname())
Default ctor following ZConfig global settings.
Definition: RepoManager.cc:473
RepoManager implementation.
Definition: RepoManager.cc:522
Functor thats filter RepoInfo by service which it belongs to.
Definition: RepoManager.h:642
MatchServiceAlias(const std::string &alias_)
Definition: RepoManager.h:644
bool operator()(const RepoInfo &info) const
Definition: RepoManager.h:645
Repository type enumeration.
Definition: RepoType.h:28
Service type enumeration.
Definition: ServiceType.h:27
Url::asString() view options.
Definition: UrlBase.h:40
static const ViewOption DEFAULTS
Default combination of view options.
Definition: UrlBase.h:177