schroot-options.cc

Go to the documentation of this file.
00001 /* Copyright © 2005-2007  Roger Leigh <rleigh@debian.org>
00002  *
00003  * schroot is free software; you can redistribute it and/or modify it
00004  * under the terms of the GNU General Public License as published by
00005  * the Free Software Foundation; either version 2 of the License, or
00006  * (at your option) any later version.
00007  *
00008  * schroot is distributed in the hope that it will be useful, but
00009  * WITHOUT ANY WARRANTY; without even the implied warranty of
00010  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00011  * General Public License for more details.
00012  *
00013  * You should have received a copy of the GNU General Public License
00014  * along with this program; if not, write to the Free Software
00015  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
00016  * MA  02111-1307  USA
00017  *
00018  *********************************************************************/
00019 
00020 #include <config.h>
00021 
00022 #include "schroot-options.h"
00023 
00024 #include <cstdlib>
00025 #include <iostream>
00026 
00027 #include <boost/format.hpp>
00028 #include <boost/program_options.hpp>
00029 
00030 using std::endl;
00031 using boost::format;
00032 using sbuild::_;
00033 namespace opt = boost::program_options;
00034 using namespace schroot;
00035 
00036 options::options ():
00037   options_base()
00038 {
00039 }
00040 
00041 options::~options ()
00042 {
00043 }
00044 
00045 void
00046 options::add_options ()
00047 {
00048   // Chain up to add general schroot options.
00049   options_base::add_options();
00050 
00051   actions.add_options()
00052     ("location",
00053      _("Print location of selected chroots"));
00054 
00055   chroot.add_options()
00056     ("all,a",
00057      _("Select all chroots and active sessions"))
00058     ("all-chroots",
00059      _("Select all chroots"))
00060     ("all-sessions",
00061      _("Select all active sessions"));
00062 
00063   chrootenv.add_options()
00064     ("directory,d", opt::value<std::string>(&this->directory),
00065      _("Directory to use"))
00066     ("user,u", opt::value<std::string>(&this->user),
00067      _("Username (default current user)"))
00068     ("preserve-environment,p",
00069      _("Preserve user environment"));
00070 
00071   session.add_options()
00072     ("automatic-session",
00073      _("Begin, run and end a session automatically (default)"))
00074     ("begin-session,b",
00075      _("Begin a session; returns a session ID"))
00076     ("recover-session",
00077      _("Recover an existing session"))
00078     ("run-session,r",
00079      _("Run an existing session"))
00080     ("end-session,e",
00081      _("End an existing session"))
00082     ("force,f",
00083      _("Force operation, even if it fails"));
00084 }
00085 
00086 
00087 void
00088 options::check_options ()
00089 {
00090   // Chain up to check general schroot options.
00091   options_base::check_options();
00092 
00093   if (vm.count("location"))
00094     this->action = ACTION_LOCATION;
00095 
00096   if (vm.count("all"))
00097     this->all = true;
00098   if (vm.count("all-chroots"))
00099     this->all_chroots = true;
00100   if (vm.count("all-sessions"))
00101     this->all_sessions = true;
00102 
00103   if (vm.count("preserve-environment"))
00104     this->preserve = true;
00105 
00106   if (vm.count("automatic-session"))
00107     this->action = ACTION_SESSION_AUTO;
00108   if (vm.count("begin-session"))
00109     this->action = ACTION_SESSION_BEGIN;
00110   if (vm.count("recover-session"))
00111     this->action = ACTION_SESSION_RECOVER;
00112   if (vm.count("run-session"))
00113     this->action = ACTION_SESSION_RUN;
00114   if (vm.count("end-session"))
00115     this->action = ACTION_SESSION_END;
00116   if (vm.count("force"))
00117     this->session_force = true;
00118 
00119   if (this->all == true)
00120     {
00121       this->all_chroots = true;
00122       this->all_sessions = true;
00123     }
00124 }

Generated on Thu May 10 23:11:36 2007 for schroot by  doxygen 1.5.2