libzypp 17.35.11
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>
32#include <utility>
33#include <zypp-core/ui/ProgressData>
34
36namespace zypp
37{
38
52 std::list<RepoInfo> readRepoFile(const Url & repo_file) ZYPP_API;
53
59 {
60 friend std::ostream & operator<<( std::ostream & str, const RepoManager & obj );
61
62 public:
64 struct Impl;
65
67 using ServiceSet = std::set<ServiceInfo>;
68 using ServiceConstIterator = ServiceSet::const_iterator;
69 using ServiceSizeType = ServiceSet::size_type;
70
72 using RepoSet = std::set<RepoInfo>;
73 using RepoConstIterator = RepoSet::const_iterator;
74 using RepoSizeType = RepoSet::size_type;
75
76 public:
80
84 static constexpr RawMetadataRefreshPolicy RefreshIfNeededIgnoreDelay = RepoManagerFlags::RefreshIfNeededIgnoreDelay;
85
87 static constexpr CacheBuildPolicy BuildIfNeeded = CacheBuildPolicy::BuildIfNeeded;
88 static constexpr CacheBuildPolicy BuildForced = CacheBuildPolicy::BuildForced;
89
92 static constexpr RefreshServiceBit RefreshService_restoreStatus = RefreshServiceBit::RefreshService_restoreStatus;
93 static constexpr RefreshServiceBit RefreshService_forceRefresh = RefreshServiceBit::RefreshService_forceRefresh;
94
95 using RefreshServiceFlags = RepoManagerFlags::RefreshServiceFlags;
96
98 using RefreshServiceOptions = RepoManagerFlags::RefreshServiceFlags;
99
107 bool repoEmpty() const;
108 RepoSizeType repoSize() const;
109 RepoConstIterator repoBegin() const;
110 RepoConstIterator repoEnd() const;
111 Iterable<RepoConstIterator> repos() const;
112
114 std::list<RepoInfo> knownRepositories() const
115 { return std::list<RepoInfo>(repoBegin(),repoEnd()); }
116
118 RepoInfo getRepo( const std::string & alias ) const;
120 RepoInfo getRepo( const RepoInfo & info_r ) const
121 { return getRepo( info_r.alias() ); }
122
124 bool hasRepo( const std::string & alias ) const;
126 bool hasRepo( const RepoInfo & info_r ) const
127 { return hasRepo( info_r.alias() ); }
128
132 static std::string makeStupidAlias( const Url & url_r = Url() );
134
138 RepoStatus metadataStatus( const RepoInfo &info ) const;
139
141 static constexpr RefreshCheckStatus REFRESH_NEEDED = RefreshCheckStatus::REFRESH_NEEDED;
142 static constexpr RefreshCheckStatus REPO_UP_TO_DATE = RefreshCheckStatus::REPO_UP_TO_DATE;
143 static constexpr RefreshCheckStatus REPO_CHECK_DELAYED = RefreshCheckStatus::REPO_CHECK_DELAYED;
199 RefreshCheckStatus checkIfToRefreshMetadata( const RepoInfo &info,
200 const Url &url,
201 RawMetadataRefreshPolicy policy = RefreshIfNeeded);
202
213 Pathname metadataPath( const RepoInfo &info ) const;
214
215
226 Pathname packagesPath( const RepoInfo &info ) const;
227
228
243 void refreshMetadata( const RepoInfo &info,
244 RawMetadataRefreshPolicy policy = RefreshIfNeeded,
246
255 void cleanMetadata( const RepoInfo &info,
257
266 void cleanPackages( const RepoInfo &info,
268
272 RepoStatus cacheStatus( const RepoInfo &info ) const;
273
292 void buildCache( const RepoInfo &info,
293 CacheBuildPolicy policy = BuildIfNeeded,
295
308 void cleanCache( const RepoInfo &info,
310
316 bool isCached( const RepoInfo &info ) const;
317
318
328 void loadFromCache( const RepoInfo &info,
330
338 void cleanCacheDirGarbage( const ProgressData::ReceiverFnc & progressrcv = ProgressData::ReceiverFnc() );
339
347 repo::RepoType probe( const Url & url, const Pathname & path ) const;
351 repo::RepoType probe( const Url & url ) const;
352
353
368 void addRepository( const RepoInfo &info,
370
383 void addRepositories( const Url &url,
390 void removeRepository( const RepoInfo & info,
392
402 void modifyRepository( const std::string &alias,
403 const RepoInfo & newinfo,
406 void modifyRepository( const RepoInfo & newinfo,
408 { modifyRepository( newinfo.alias(), newinfo, progressrcv ); }
409
423 RepoInfo getRepositoryInfo( const std::string &alias,
425
445 RepoInfo getRepositoryInfo( const Url & url,
446 const url::ViewOption & urlview = url::ViewOption::DEFAULTS,
448
449
462 bool serviceEmpty() const;
463
469 ServiceSizeType serviceSize() const;
470
476 ServiceConstIterator serviceBegin() const;
477
482 ServiceConstIterator serviceEnd() const;
483
485 Iterable<ServiceConstIterator> services() const;
486
488 std::list<ServiceInfo> knownServices() const
489 { return std::list<ServiceInfo>(serviceBegin(),serviceEnd()); }
490
497 ServiceInfo getService( const std::string & alias ) const;
498
500 bool hasService( const std::string & alias ) const;
502
506 repo::ServiceType probeService( const Url &url ) const;
507
516 void addService( const std::string & alias, const Url& url );
517
525 void addService( const ServiceInfo & service );
526
535 void removeService( const std::string & alias );
537 void removeService( const ServiceInfo & service );
538
539
545 void refreshServices( const RefreshServiceOptions & options_r = RefreshServiceOptions() );
546
555 void refreshService( const std::string & alias, const RefreshServiceOptions & options_r = RefreshServiceOptions() );
557 void refreshService( const ServiceInfo & service, const RefreshServiceOptions & options_r = RefreshServiceOptions() );
558
575 void modifyService( const std::string & oldAlias, const ServiceInfo & service );
577 void modifyService( const ServiceInfo & service )
578 { modifyService( service.alias(), service ); }
579
584 void refreshGeoIp ( const RepoInfo::url_set &urls );
585
586 private:
591 {
592 public:
593 MatchServiceAlias( std::string alias_ ) : alias(std::move(alias_)) {}
594 bool operator()( const RepoInfo & info ) const
595 { return info.service() == alias; }
596 private:
597 std::string alias;
598 };
599
600 public:
601
634 template<typename OutputIterator>
635 void getRepositoriesInService( const std::string & alias,
636 OutputIterator out ) const
637 {
638 MatchServiceAlias filter(alias);
639
640 std::copy( boost::make_filter_iterator( filter, repoBegin(), repoEnd() ),
641 boost::make_filter_iterator( filter, repoEnd(), repoEnd() ),
642 out);
643 }
644
645 private:
648 };
650
652 std::ostream & operator<<( std::ostream & str, const RepoManager & obj ) ZYPP_API;
653
657
661
663} // namespace zypp
665#endif // ZYPP2_REPOMANAGER_H
Iterable< TIterator > makeIterable(TIterator &&begin_r, TIterator &&end_r)
convenient construction.
Definition Iterable.h:88
function< bool(const ProgressData &)> ReceiverFnc
Most simple version of progress reporting The percentage in most cases.
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:638
std::list< Url > url_set
Definition RepoInfo.h:108
creates and provides information about known sources.
Definition RepoManager.h:59
RepoInfo getRepo(const RepoInfo &info_r) const
ServiceSet::const_iterator ServiceConstIterator
Definition RepoManager.h:68
bool hasRepo(const RepoInfo &info_r) const
RWCOW_pointer< Impl > _pimpl
Pointer to implementation.
std::list< ServiceInfo > knownServices() const
List of known services.
ServiceSet::size_type ServiceSizeType
Definition RepoManager.h:69
RepoManagerFlags::RefreshServiceFlags RefreshServiceFlags
Definition RepoManager.h:95
ServiceConstIterator serviceEnd() const
Iterator to place behind last service in internal storage.
ServiceConstIterator serviceBegin() const
Iterator to first service in internal storage.
void modifyService(const ServiceInfo &service)
Iterable< ServiceConstIterator > services() const
Iterate the known services.
void modifyRepository(const RepoInfo &newinfo, const ProgressData::ReceiverFnc &progressrcv=ProgressData::ReceiverFnc())
RepoSet::size_type RepoSizeType
Definition RepoManager.h:74
std::list< RepoInfo > knownRepositories() const
List of known repositories.
RepoConstIterator repoBegin() const
std::set< RepoInfo > RepoSet
RepoInfo typedefs.
Definition RepoManager.h:72
Iterable< RepoConstIterator > repos() const
Iterate the known repositories.
RepoManagerFlags::RefreshServiceFlags RefreshServiceOptions
Options tuning RefreshService.
Definition RepoManager.h:98
void getRepositoriesInService(const std::string &alias, OutputIterator out) const
fill to output iterator repositories in service name.
RepoConstIterator repoEnd() const
RepoSet::const_iterator RepoConstIterator
Definition RepoManager.h:73
std::set< ServiceInfo > ServiceSet
ServiceInfo typedefs.
Definition RepoManager.h:67
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.
Definition Arch.h:364
String related utilities and Regular expression matching.
RefreshCheckStatus
Possibly return state of RepoManager::checkIfToRefreshMetadata function.
RefreshServiceBit
Flags for tuning RefreshService.
Easy-to use interface to the ZYPP dependency resolver.
std::list< RepoInfo > readRepoFile(const Url &repo_file)
Parses repo_file and returns a list of RepoInfo objects corresponding to repositories found within th...
std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
const Arch Arch_armv7hnl Arch_armv7nhl ZYPP_API
Definition Arch.h:247
RW_pointer supporting 'copy on write' functionality.
Definition PtrTypes.h:469
Repo manager settings.
RepoManager implementation.
Functor thats filter RepoInfo by service which it belongs to.
MatchServiceAlias(std::string alias_)
bool operator()(const RepoInfo &info) const
Repository type enumeration.
Definition RepoType.h:29
Service type enumeration.
Definition ServiceType.h:27
Url::asString() view options.
Definition UrlBase.h:40