00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef SCHROOT_OPTIONS_BASE_H
00021 #define SCHROOT_OPTIONS_BASE_H
00022
00023 #include <sbuild/sbuild-session.h>
00024 #include <sbuild/sbuild-types.h>
00025
00026 #include <schroot/schroot-base-options.h>
00027
00028 #include <string>
00029
00030 #ifdef HAVE_TR1_MEMORY
00031 #include <tr1/memory>
00032 #elif HAVE_BOOST_SHARED_PTR_HPP
00033 #include <boost/shared_ptr.hpp>
00034 namespace std { namespace tr1 { using boost::shared_ptr; } }
00035 #else
00036 #error A shared_ptr implementation is not available
00037 #endif
00038
00039 #include <boost/program_options.hpp>
00040
00041 namespace schroot
00042 {
00043
00050 class options_base : public schroot_base::options
00051 {
00052 public:
00054 enum action_type
00055 {
00056 ACTION_SESSION_AUTO,
00057 ACTION_SESSION_BEGIN,
00058 ACTION_SESSION_RECOVER,
00059 ACTION_SESSION_RUN,
00060 ACTION_SESSION_END,
00061 ACTION_HELP,
00062 ACTION_VERSION,
00063 ACTION_LIST,
00064 ACTION_INFO,
00065 ACTION_LOCATION,
00066 ACTION_CONFIG
00067 };
00068
00070 typedef std::tr1::shared_ptr<options_base> ptr;
00071
00078 options_base ();
00079
00081 virtual ~options_base ();
00082
00084 action_type action;
00086 sbuild::string_list chroots;
00088 std::string chroot_path;
00090 sbuild::string_list command;
00092 std::string user;
00094 bool preserve;
00096 bool all;
00098 bool all_chroots;
00100 bool all_sessions;
00102 bool load_chroots;
00104 bool load_sessions;
00106 bool session_force;
00107
00108 protected:
00115 void
00116 set_action (action_type action);
00117
00124 bool
00125 all_used () const
00126 {
00127 return (this->all || this->all_chroots || this->all_sessions);
00128 }
00129
00130 virtual void
00131 add_options ();
00132
00133 virtual void
00134 add_option_groups ();
00135
00136 virtual void
00137 check_options ();
00138
00139 virtual void
00140 check_actions ();
00141
00142 boost::program_options::options_description chroot;
00143 boost::program_options::options_description chrootenv;
00144 boost::program_options::options_description session;
00145 };
00146
00147 }
00148
00149 #endif
00150
00151
00152
00153
00154
00155
00156