libzypp  17.38.7
RepoInfo.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP2_REPOSITORYINFO_H
13 #define ZYPP2_REPOSITORYINFO_H
14 
15 #include <list>
16 #include <set>
17 
19 #include <zypp-core/Globals.h>
21 #include <zypp-core/TriBool.h>
22 #include <zypp-core/Url.h>
23 
24 #include <zypp/Locale.h>
25 #include <zypp/repo/RepoType.h>
27 #include <zypp/repo/RepoInfoBase.h>
28 
30 namespace zypp
31 {
32 
34  //
35  // CLASS NAME : RepoInfo
36  //
72  {
73  friend std::ostream & operator<<( std::ostream & str, const RepoInfo & obj );
74 
75  public:
76  RepoInfo();
77  ~RepoInfo() override;
78 
79  RepoInfo(const RepoInfo &) = default;
80  RepoInfo(RepoInfo &&) = default;
81  RepoInfo &operator=(const RepoInfo &) = default;
82  RepoInfo &operator=(RepoInfo &&) = default;
83 
85  static const RepoInfo noRepo;
86 
87  public:
91  static unsigned defaultPriority();
95  static unsigned noPriority();
100  unsigned priority() const;
106  void setPriority( unsigned newval_r );
107 
108  using url_set = std::list<Url>;
110  using urls_const_iterator = transform_iterator<repo::RepoVariablesUrlReplacer, url_set::const_iterator>;
114  bool baseUrlsEmpty() const;
119  bool baseUrlSet() const;
123  urls_size_type baseUrlsSize() const;
127  urls_const_iterator baseUrlsBegin() const;
131  urls_const_iterator baseUrlsEnd() const;
132 
137  Url url() const;
142  Url rawUrl() const;
143 
149  Url location() const;
150 
154  url_set baseUrls() const;
158  url_set rawBaseUrls() const;
159 
167  void addBaseUrl( Url url );
171  void setBaseUrl( Url url );
175  void setBaseUrls( url_set urls );
176 
187  MirroredOriginSet repoOrigins() const;
188 
192  bool repoOriginsEmpty() const;
193 
214  Pathname path() const;
219  void setPath( const Pathname &path );
220 
225  Url mirrorListUrl() const;
230  Url rawMirrorListUrl() const;
231 
233  void setMirrorlistUrl( const Url &url );
235  void setMetalinkUrl( const Url &url );
236 
238  Url rawCfgMirrorlistUrl() const;
240  Url rawCfgMetalinkUrl() const;
241 
242 #if LEGACY(1735)
243 
247  void setMirrorListUrl( const Url &url ) ZYPP_DEPRECATED;
249  void setMetalinkUrls( url_set urls ) ZYPP_DEPRECATED;
251  void setMirrorListUrls( url_set urls ) ZYPP_DEPRECATED;
252 #endif
253 
258  repo::RepoType type() const;
265  void setProbedType( const repo::RepoType &t ) const;
270  void setType( const repo::RepoType &t );
271 
278  Pathname metadataPath() const;
305  void setMetadataPath( const Pathname &path );
306 
308  bool usesAutoMetadataPaths() const;
309 
314  Pathname systemPackagesPath() const;
315 
322  Pathname packagesPath() const;
323 
329  void setPackagesPath( const Pathname &path );
330 
334  Pathname predownloadPath() const;
335 
336 
394  bool gpgCheck() const;
396  void setGpgCheck( TriBool value_r );
398  void setGpgCheck( bool value_r );
399 
401  bool repoGpgCheck() const;
403  bool repoGpgCheckIsMandatory() const;
405  void setRepoGpgCheck( TriBool value_r );
406 
408  bool pkgGpgCheck() const;
410  bool pkgGpgCheckIsMandatory() const;
412  void setPkgGpgCheck( TriBool value_r );
413 
417  TriBool validRepoSignature() const;
419  void setValidRepoSignature( TriBool value_r );
420 
422  enum class GpgCheck {
423  indeterminate, //< not specified
424  On, //< 1** --gpgcheck
425  Strict, //< 111 --gpgcheck-strict
426  AllowUnsigned, //< 100 --gpgcheck-allow-unsigned
427  AllowUnsignedRepo, //< 10* --gpgcheck-allow-unsigned-repo
428  AllowUnsignedPackage, //< 1*0 --gpgcheck-allow-unsigned-package
429  Default, //< *** --default-gpgcheck
430  Off, //< 0** --no-gpgcheck
431  };
432 
437  bool setGpgCheck( GpgCheck mode_r );
439 
440 
442  bool gpgKeyUrlsEmpty() const;
444  urls_size_type gpgKeyUrlsSize() const;
445 
447  url_set gpgKeyUrls() const;
449  url_set rawGpgKeyUrls() const;
451  void setGpgKeyUrls( url_set urls );
452 
454  Url gpgKeyUrl() const;
456  Url rawGpgKeyUrl() const;
458  void setGpgKeyUrl( const Url &gpgkey );
459 
463  bool keepPackages() const;
473  void setKeepPackages( bool keep );
474 
479  bool effectiveKeepPackages() const;
480 
485  std::string service() const;
489  void setService( const std::string& name );
490 
494  std::string targetDistribution() const;
500  void setTargetDistribution(const std::string & targetDistribution);
501 
502 
504  const std::set<std::string> & contentKeywords() const;
505 
507  void addContent( const std::string & keyword_r );
509  template <class TIterator>
510  void addContentFrom( TIterator begin_r, TIterator end_r )
511  { for_( it, begin_r, end_r ) addContent( *it ); }
513  template <class TContainer>
514  void addContentFrom( const TContainer & container_r )
515  { addContentFrom( container_r.begin(), container_r.end() ); }
516 
520  bool hasContent() const;
522  bool hasContent( const std::string & keyword_r ) const;
524  template <class TIterator>
525  bool hasContentAll( TIterator begin_r, TIterator end_r ) const
526  { for_( it, begin_r, end_r ) if ( ! hasContent( *it ) ) return false; return true; }
528  template <class TContainer>
529  bool hasContentAll( const TContainer & container_r ) const
530  { return hasContentAll( container_r.begin(), container_r.end() ); }
532  template <class TIterator>
533  bool hasContentAny( TIterator begin_r, TIterator end_r ) const
534  { for_( it, begin_r, end_r ) if ( hasContent( *it ) ) return true; return false; }
536  template <class TContainer>
537  bool hasContentAny( const TContainer & container_r ) const
538  { return hasContentAny( container_r.begin(), container_r.end() ); }
539 
540  public:
554  bool hasLicense() const;
556  bool hasLicense( const std::string & name_r ) const;
557 
561  bool needToAcceptLicense() const;
563  bool needToAcceptLicense( const std::string & name_r ) const;
564 
566  std::string getLicense( const Locale & lang_r = Locale() ) const;
568  std::string getLicense( const Locale & lang_r = Locale() ); // LEGACY API
570  std::string getLicense( const std::string & name_r, const Locale & lang_r = Locale() ) const;
571 
576  LocaleSet getLicenseLocales() const;
578  LocaleSet getLicenseLocales( const std::string & name_r ) const;
580 
585  bool requireStatusWithMediaFile () const;
586 
587  public:
592  std::ostream & dumpOn( std::ostream & str ) const override;
593 
598  std::ostream & dumpAsIniOn( std::ostream & str ) const override;
599 
608  std::ostream & dumpAsXmlOn( std::ostream & str, const std::string & content = "" ) const override;
609 
613  void getRawGpgChecks( TriBool & g_r, TriBool & r_r, TriBool & p_r ) const;
614 
620  std::string repoStatusString() const;
621 
622  struct Impl;
623  private:
624  friend class RepoManager;
625 
628  };
630 
632  using RepoInfo_Ptr = shared_ptr<RepoInfo>;
634  using RepoInfo_constPtr = shared_ptr<const RepoInfo>;
636  using RepoInfoList = std::list<RepoInfo>;
637 
639  std::ostream & operator<<( std::ostream & str, const RepoInfo & obj ) ZYPP_API;
640 
642  std::ostream & operator<<( std::ostream & str, const RepoInfo::GpgCheck & obj ) ZYPP_API;
643 
645 } // namespace zypp
647 #endif // ZYPP2_REPOSITORYINFO_H
bool hasContentAll(TIterator begin_r, TIterator end_r) const
Definition: RepoInfo.h:525
zypp::RepoInfo RepoInfo
Definition: repomanager.h:38
#define ZYPP_DEPRECATED
The ZYPP_DEPRECATED macro can be used to trigger compile-time warnings with gcc >= 3...
Definition: Globals.h:112
RWCOW_pointer< Impl > _pimpl
Pointer to implementation.
Definition: RepoInfo.h:627
std::unordered_set< Locale > LocaleSet
Definition: Locale.h:29
String related utilities and Regular expression matching.
std::list< RepoInfo > RepoInfoList
relates: RepoInfo
Definition: RepoInfo.h:636
What is known about a repository.
Definition: RepoInfo.h:71
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
Definition: Easy.h:27
Request the standard behavior (as defined in zypp.conf or &#39;Job&#39;)
bool hasContentAny(TIterator begin_r, TIterator end_r) const
Definition: RepoInfo.h:533
boost::logic::tribool TriBool
3-state boolean logic (true, false and indeterminate).
Definition: String.h:31
RepoInfo implementation.
Definition: RepoInfo.cc:100
bool hasContentAll(const TContainer &container_r) const
Definition: RepoInfo.h:529
GpgCheck
Some predefined settings.
Definition: RepoInfo.h:422
const Arch Arch_empty ZYPP_API
relates: Arch This is an empty Arch represented by an empty string.
Definition: Arch.h:173
Provides API related macros.
url_set::size_type urls_size_type
Definition: RepoInfo.h:109
std::list< Url > url_set
Definition: RepoInfo.h:108
std::ostream & dumpOn(std::ostream &str, const Capability &obj)
relates: Capability Detailed stream output
Definition: Capability.cc:589
transform_iterator< repo::RepoVariablesUrlReplacer, url_set::const_iterator > urls_const_iterator
Definition: RepoInfo.h:110
SolvableIdType size_type
Definition: poolconstants.h:59
bool hasContentAny(const TContainer &container_r) const
Definition: RepoInfo.h:537
&#39;Language[_Country]&#39; codes.
Definition: Locale.h:50
std::ostream & dumpAsXmlOn(std::ostream &str, const Repository &obj)
relates: Repository XML output
Definition: Repository.cc:411
shared_ptr< const RepoInfo > RepoInfo_constPtr
relates: RepoInfo
Definition: RepoInfo.h:634
void addContentFrom(TIterator begin_r, TIterator end_r)
Definition: RepoInfo.h:510
static const RepoInfo noRepo
Represents no Repository (one with an empty alias).
Definition: RepoInfo.h:85
shared_ptr< RepoInfo > RepoInfo_Ptr
relates: RepoInfo
Definition: RepoInfo.h:632
Base class implementing common features of RepoInfo and ServiceInfo.
Definition: RepoInfoBase.h:39
std::ostream & operator<<(std::ostream &str, const Capabilities &obj)
relates: Capabilities Stream output
Definition: Capabilities.cc:65
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:1
Url manipulation class.
Definition: Url.h:92
A smart container that manages a collection of MirroredOrigin objects, automatically grouping endpoin...
void addContentFrom(const TContainer &container_r)
Definition: RepoInfo.h:514
Repository type enumeration.
Definition: RepoType.h:28