Write userdata string to history log (fate#312521)
[platform/upstream/libzypp.git] / zypp / ZYppCommitPolicy.cc
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9 /** \file       zypp/ZYppCommitPolicy.cc
10  *
11 */
12
13 #include <iostream>
14
15 #include "zypp/base/String.h"
16
17 #include "zypp/ZConfig.h"
18 #include "zypp/ZYppCommitPolicy.h"
19
20 ///////////////////////////////////////////////////////////////////
21 namespace zypp
22 { /////////////////////////////////////////////////////////////////
23
24   ///////////////////////////////////////////////////////////////////
25   //
26   //    CLASS NAME : ZYppCommitPolicy::Impl
27   //
28   ///////////////////////////////////////////////////////////////////
29
30   class ZYppCommitPolicy::Impl
31   {
32     public:
33       Impl()
34       : _restrictToMedia        ( 0 )
35       , _dryRun                 ( false )
36       , _downloadMode           ( ZConfig::instance().commit_downloadMode() )
37       , _rpmInstFlags           ( ZConfig::instance().rpmInstallFlags() )
38       , _syncPoolAfterCommit    ( true )
39       {}
40
41     public:
42       unsigned                  _restrictToMedia;
43       bool                      _dryRun;
44       DownloadMode              _downloadMode;
45       target::rpm::RpmInstFlags _rpmInstFlags;
46       bool                      _syncPoolAfterCommit;
47
48     private:
49       friend Impl * rwcowClone<Impl>( const Impl * rhs );
50       /** clone for RWCOW_pointer */
51       Impl * clone() const { return new Impl( *this ); }
52   };
53
54   ///////////////////////////////////////////////////////////////////
55   //
56   //    CLASS NAME : ZYppCommitPolicy
57   //
58   ///////////////////////////////////////////////////////////////////
59
60   ZYppCommitPolicy::ZYppCommitPolicy()
61   : _pimpl( new Impl )
62   {}
63
64
65   ZYppCommitPolicy & ZYppCommitPolicy::restrictToMedia( unsigned mediaNr_r )
66   { _pimpl->_restrictToMedia = ( mediaNr_r == 1 ) ? 1 : 0; return *this; }
67
68   unsigned ZYppCommitPolicy::restrictToMedia() const
69   { return _pimpl->_restrictToMedia; }
70
71
72   ZYppCommitPolicy & ZYppCommitPolicy::dryRun( bool yesNo_r )
73   { _pimpl->_dryRun = yesNo_r; return *this; }
74
75   bool ZYppCommitPolicy::dryRun() const
76   { return _pimpl->_dryRun; }
77
78
79   ZYppCommitPolicy & ZYppCommitPolicy::downloadMode( DownloadMode val_r )
80   { _pimpl->_downloadMode = val_r; return *this; }
81
82   DownloadMode ZYppCommitPolicy::downloadMode() const
83   { return _pimpl->_downloadMode; }
84
85
86   ZYppCommitPolicy &  ZYppCommitPolicy::rpmInstFlags( target::rpm::RpmInstFlags newFlags_r )
87   { _pimpl->_rpmInstFlags = newFlags_r; return *this; }
88
89   ZYppCommitPolicy & ZYppCommitPolicy::rpmNoSignature( bool yesNo_r )
90   { _pimpl->_rpmInstFlags.setFlag( target::rpm::RPMINST_NOSIGNATURE, yesNo_r ); return *this; }
91
92   ZYppCommitPolicy & ZYppCommitPolicy::rpmExcludeDocs( bool yesNo_r )
93   { _pimpl->_rpmInstFlags.setFlag( target::rpm::RPMINST_EXCLUDEDOCS, yesNo_r ); return *this; }
94
95   target::rpm::RpmInstFlags ZYppCommitPolicy::rpmInstFlags() const
96   { return _pimpl->_rpmInstFlags; }
97
98   bool ZYppCommitPolicy::rpmNoSignature() const
99   { return _pimpl->_rpmInstFlags.testFlag( target::rpm::RPMINST_NOSIGNATURE ); }
100
101   bool ZYppCommitPolicy::rpmExcludeDocs() const
102   { return _pimpl->_rpmInstFlags.testFlag( target::rpm::RPMINST_EXCLUDEDOCS ); }
103
104
105   ZYppCommitPolicy & ZYppCommitPolicy::syncPoolAfterCommit( bool yesNo_r )
106   { _pimpl->_syncPoolAfterCommit = yesNo_r; return *this; }
107
108   bool ZYppCommitPolicy::syncPoolAfterCommit() const
109   { return _pimpl->_syncPoolAfterCommit; }
110
111
112   std::ostream & operator<<( std::ostream & str, const ZYppCommitPolicy & obj )
113   {
114     str << "CommitPolicy(";
115     if ( obj.restrictToMedia() )
116       str << " restrictToMedia:" << obj.restrictToMedia();
117     if ( obj.dryRun() )
118       str << " dryRun";
119     str << " " << obj.downloadMode();
120     if ( obj.syncPoolAfterCommit() )
121       str << " syncPoolAfterCommit";
122     if ( obj.rpmInstFlags() )
123       str << " rpmInstFlags{" << str::hexstring(obj.rpmInstFlags()) << "}";
124     return str << " )";
125   }
126
127   /////////////////////////////////////////////////////////////////
128 } // namespace zypp
129 ///////////////////////////////////////////////////////////////////