diff options
-rw-r--r-- | build/root.build | 26 | ||||
-rw-r--r-- | manifest | 2 | ||||
-rw-r--r-- | mod/.gitignore | 2 | ||||
-rw-r--r-- | mod/buildfile | 79 | ||||
-rw-r--r-- | mod/pregenerated/mod/module-options.cxx | 9974 | ||||
-rw-r--r-- | mod/pregenerated/mod/module-options.hxx | 4546 | ||||
-rw-r--r-- | mod/pregenerated/mod/module-options.ixx | 3435 | ||||
-rw-r--r-- | monitor/.gitignore | 4 | ||||
-rw-r--r-- | monitor/buildfile | 70 | ||||
-rw-r--r-- | monitor/pregenerated/monitor/module-options.cxx | 495 | ||||
-rw-r--r-- | monitor/pregenerated/monitor/module-options.hxx | 91 | ||||
-rw-r--r-- | monitor/pregenerated/monitor/module-options.ixx | 24 | ||||
-rw-r--r-- | monitor/pregenerated/monitor/monitor-options.cxx | 863 | ||||
-rw-r--r-- | monitor/pregenerated/monitor/monitor-options.hxx | 200 | ||||
-rw-r--r-- | monitor/pregenerated/monitor/monitor-options.ixx | 168 | ||||
-rw-r--r-- | repositories.manifest | 99 |
16 files changed, 19996 insertions, 82 deletions
diff --git a/build/root.build b/build/root.build index 11c109f..cbbbe4b 100644 --- a/build/root.build +++ b/build/root.build @@ -1,6 +1,10 @@ # file : build/root.build # license : MIT; see accompanying LICENSE file +config [bool] config.brep.develop ?= false + +develop = $config.brep.develop + cxx.std = latest using cxx @@ -19,14 +23,6 @@ if ($cxx.id == 'gcc') cxx.poptions =+ "-I$out_root" "-I$src_root" -# Load the cli module but only if it's available. This way a distribution -# that includes pre-generated files can be built without installing cli. -# This is also the reason why we need to explicitly spell out individual -# source file prerequisites instead of using the cli.cxx{} group (it won't -# be there unless the module is configured). -# -using? cli - # Bash. # using bash @@ -35,6 +31,9 @@ brep/bash{*}: install.subdirs = true # Define commonly used target types. # +define cli: file +cli{*}: extension = cli + define css: file css{*}: extension = css @@ -56,7 +55,10 @@ test.target = $cxx.target # Extract the copyright notice from the LICENSE file. # -copyright = $process.run_regex( \ - cat $src_root/LICENSE, \ - 'Copyright \(c\) (.+) \(see the AUTHORS and LEGAL files\)\.', \ - '\1') +# Note that cat is a builtin which means this is both portable and fast. +# +if ($build.mode != 'skeleton') + copyright = $process.run_regex( \ + cat $src_root/LICENSE, \ + 'Copyright \(c\) (.+) \(see the AUTHORS and LEGAL files\)\.', \ + '\1') @@ -34,3 +34,5 @@ depends: libbpkg [0.16.0-a.0.1 0.16.0-a.1) depends: libbbot [0.16.0-a.0.1 0.16.0-a.1) depends: libbutl.bash [0.16.0-a.0.1 0.16.0-a.1) depends: bpkg-util [0.16.0-a.0.1 0.16.0-a.1) +depends: * cli ^1.2.0- ? ($config.brep.develop) +depends: * odb ^2.5.0- ? ($config.brep.develop) diff --git a/mod/.gitignore b/mod/.gitignore index 6b64ad0..619050a 100644 --- a/mod/.gitignore +++ b/mod/.gitignore @@ -1 +1 @@ -*-options.?xx +/*-options.?xx diff --git a/mod/buildfile b/mod/buildfile index 58a3caf..b5865cd 100644 --- a/mod/buildfile +++ b/mod/buildfile @@ -31,38 +31,73 @@ mod{brep}: {hxx ixx txx cxx}{* -module-options -{$libu_src}} \ libus{mod} ../libbrep/lib{brep} ../web/server/libus{web-server} \ $libs -{libue libus}{mod}: {hxx ixx cxx}{module-options} \ - {hxx ixx txx cxx}{+{$libu_src} } \ - $libs +{libue libus}{mod}: {hxx ixx txx cxx}{+{$libu_src}} $libs libus{mod}: ../web/xhtml/libus{xhtml} libue{mod}: ../web/xhtml/libue{xhtml} -# Generated options parser. +## Consumption build ($develop == false). +# + +# Use pregenerated versions in the consumption build. +# +{libue libus}{mod}: pregenerated/{hxx ixx cxx}{**}: include = (!$develop) + +if! $develop + cxx.poptions =+ "-I($src_base/pregenerated)" + +# Distribute pregenerated versions only in the consumption build. +# +pregenerated/{hxx ixx cxx}{*}: dist = (!$develop) + +# +## + +## Development build ($develop == true). # -if $cli.configured -{ - cli.cxx{module-options}: cli{module} +{libue libus}{mod}: {hxx ixx cxx}{module-options}: include = $develop + +if $develop + import! [metadata] cli = cli%exe{cli} + +# In the development build distribute regenerated +# {hxx ixx cxx}{module-options}, remapping their locations to the paths of the +# pregenerated versions (which are only distributed in the consumption build; +# see above). This way we make sure that the distributed files are always +# up-to-date. +# +<{hxx ixx cxx}{module-options}>: cli{module} $cli +{ # Set option prefix to the empty value to handle all unknown request # parameters uniformly with a single catch block. # - cli.options += --std c++11 -I $src_root --include-with-brackets \ ---include-prefix mod --guard-prefix MOD --generate-specifier \ ---cxx-prologue "#include <mod/types-parsers.hxx>" \ ---cli-namespace brep::cli --generate-file-scanner --option-length 46 \ ---generate-modifier --generate-description --option-prefix "" - - # Include the generated cli files into the distribution and don't remove - # them when cleaning in src (so that clean results in a state identical to - # distributed). - # - cli.cxx{*}: - { - dist = true - clean = ($src_root != $out_root) - } + options = --std c++11 -I $src_root --include-with-brackets \ + --include-prefix mod --guard-prefix MOD --generate-specifier \ + --cxx-prologue "#include <mod/types-parsers.hxx>" \ + --cli-namespace brep::cli --generate-file-scanner \ + --option-length 46 --generate-modifier --generate-description \ + --option-prefix "" --output-suffix "-options" } +% +if $develop +{{ + diag cli ($<[0]) + ($<[1]) $options -o $out_base/ $path($<[0]) + + if diff $src_base/pregenerated/mod/module-options.hxx $path($>[0]) >- && \ + diff $src_base/pregenerated/mod/module-options.ixx $path($>[1]) >- && \ + diff $src_base/pregenerated/mod/module-options.cxx $path($>[2]) >- + exit + end + + cp $path($>[0]) $src_base/pregenerated/mod/module-options.hxx + cp $path($>[1]) $src_base/pregenerated/mod/module-options.ixx + cp $path($>[2]) $src_base/pregenerated/mod/module-options.cxx +}} + +# +## # Don't install any of the module's headers. # diff --git a/mod/pregenerated/mod/module-options.cxx b/mod/pregenerated/mod/module-options.cxx new file mode 100644 index 0000000..33daa91 --- /dev/null +++ b/mod/pregenerated/mod/module-options.cxx @@ -0,0 +1,9974 @@ +// -*- C++ -*- +// +// This file was generated by CLI, a command line interface +// compiler for C++. +// + +// Begin prologue. +// +#include <mod/types-parsers.hxx> +// +// End prologue. + +#include <mod/module-options.hxx> + +#include <map> +#include <set> +#include <string> +#include <vector> +#include <utility> +#include <ostream> +#include <sstream> +#include <cstring> +#include <fstream> + +namespace brep +{ + namespace cli + { + // unknown_option + // + unknown_option:: + ~unknown_option () throw () + { + } + + void unknown_option:: + print (::std::ostream& os) const + { + os << "unknown option '" << option ().c_str () << "'"; + } + + const char* unknown_option:: + what () const throw () + { + return "unknown option"; + } + + // unknown_argument + // + unknown_argument:: + ~unknown_argument () throw () + { + } + + void unknown_argument:: + print (::std::ostream& os) const + { + os << "unknown argument '" << argument ().c_str () << "'"; + } + + const char* unknown_argument:: + what () const throw () + { + return "unknown argument"; + } + + // missing_value + // + missing_value:: + ~missing_value () throw () + { + } + + void missing_value:: + print (::std::ostream& os) const + { + os << "missing value for option '" << option ().c_str () << "'"; + } + + const char* missing_value:: + what () const throw () + { + return "missing option value"; + } + + // invalid_value + // + invalid_value:: + ~invalid_value () throw () + { + } + + void invalid_value:: + print (::std::ostream& os) const + { + os << "invalid value '" << value ().c_str () << "' for option '" + << option ().c_str () << "'"; + + if (!message ().empty ()) + os << ": " << message ().c_str (); + } + + const char* invalid_value:: + what () const throw () + { + return "invalid option value"; + } + + // eos_reached + // + void eos_reached:: + print (::std::ostream& os) const + { + os << what (); + } + + const char* eos_reached:: + what () const throw () + { + return "end of argument stream reached"; + } + + // file_io_failure + // + file_io_failure:: + ~file_io_failure () throw () + { + } + + void file_io_failure:: + print (::std::ostream& os) const + { + os << "unable to open file '" << file ().c_str () << "' or read failure"; + } + + const char* file_io_failure:: + what () const throw () + { + return "unable to open file or read failure"; + } + + // unmatched_quote + // + unmatched_quote:: + ~unmatched_quote () throw () + { + } + + void unmatched_quote:: + print (::std::ostream& os) const + { + os << "unmatched quote in argument '" << argument ().c_str () << "'"; + } + + const char* unmatched_quote:: + what () const throw () + { + return "unmatched quote"; + } + + // scanner + // + scanner:: + ~scanner () + { + } + + // argv_scanner + // + bool argv_scanner:: + more () + { + return i_ < argc_; + } + + const char* argv_scanner:: + peek () + { + if (i_ < argc_) + return argv_[i_]; + else + throw eos_reached (); + } + + const char* argv_scanner:: + next () + { + if (i_ < argc_) + { + const char* r (argv_[i_]); + + if (erase_) + { + for (int i (i_ + 1); i < argc_; ++i) + argv_[i - 1] = argv_[i]; + + --argc_; + argv_[argc_] = 0; + } + else + ++i_; + + ++start_position_; + return r; + } + else + throw eos_reached (); + } + + void argv_scanner:: + skip () + { + if (i_ < argc_) + { + ++i_; + ++start_position_; + } + else + throw eos_reached (); + } + + std::size_t argv_scanner:: + position () + { + return start_position_; + } + + // argv_file_scanner + // + int argv_file_scanner::zero_argc_ = 0; + std::string argv_file_scanner::empty_string_; + + bool argv_file_scanner:: + more () + { + if (!args_.empty ()) + return true; + + while (base::more ()) + { + // See if the next argument is the file option. + // + const char* a (base::peek ()); + const option_info* oi = 0; + const char* ov = 0; + + if (!skip_) + { + if ((oi = find (a)) != 0) + { + base::next (); + + if (!base::more ()) + throw missing_value (a); + + ov = base::next (); + } + } + + if (oi != 0) + { + if (oi->search_func != 0) + { + std::string f (oi->search_func (ov, oi->arg)); + + if (!f.empty ()) + load (f); + } + else + load (ov); + + if (!args_.empty ()) + return true; + } + else + { + if (!skip_) + skip_ = (std::strcmp (a, "--") == 0); + + return true; + } + } + + return false; + } + + const char* argv_file_scanner:: + peek () + { + if (!more ()) + throw eos_reached (); + + return args_.empty () ? base::peek () : args_.front ().value.c_str (); + } + + const std::string& argv_file_scanner:: + peek_file () + { + if (!more ()) + throw eos_reached (); + + return args_.empty () ? empty_string_ : *args_.front ().file; + } + + std::size_t argv_file_scanner:: + peek_line () + { + if (!more ()) + throw eos_reached (); + + return args_.empty () ? 0 : args_.front ().line; + } + + const char* argv_file_scanner:: + next () + { + if (!more ()) + throw eos_reached (); + + if (args_.empty ()) + return base::next (); + else + { + hold_[i_ == 0 ? ++i_ : --i_].swap (args_.front ().value); + args_.pop_front (); + ++start_position_; + return hold_[i_].c_str (); + } + } + + void argv_file_scanner:: + skip () + { + if (!more ()) + throw eos_reached (); + + if (args_.empty ()) + return base::skip (); + else + { + args_.pop_front (); + ++start_position_; + } + } + + const argv_file_scanner::option_info* argv_file_scanner:: + find (const char* a) const + { + for (std::size_t i (0); i < options_count_; ++i) + if (std::strcmp (a, options_[i].option) == 0) + return &options_[i]; + + return 0; + } + + std::size_t argv_file_scanner:: + position () + { + return start_position_; + } + + void argv_file_scanner:: + load (const std::string& file) + { + using namespace std; + + ifstream is (file.c_str ()); + + if (!is.is_open ()) + throw file_io_failure (file); + + files_.push_back (file); + + arg a; + a.file = &*files_.rbegin (); + + for (a.line = 1; !is.eof (); ++a.line) + { + string line; + getline (is, line); + + if (is.fail () && !is.eof ()) + throw file_io_failure (file); + + string::size_type n (line.size ()); + + // Trim the line from leading and trailing whitespaces. + // + if (n != 0) + { + const char* f (line.c_str ()); + const char* l (f + n); + + const char* of (f); + while (f < l && (*f == ' ' || *f == '\t' || *f == '\r')) + ++f; + + --l; + + const char* ol (l); + while (l > f && (*l == ' ' || *l == '\t' || *l == '\r')) + --l; + + if (f != of || l != ol) + line = f <= l ? string (f, l - f + 1) : string (); + } + + // Ignore empty lines, those that start with #. + // + if (line.empty () || line[0] == '#') + continue; + + string::size_type p (string::npos); + p = line.find (' '); + + string s1; + if (p != string::npos) + { + s1.assign (line, 0, p); + + // Skip leading whitespaces in the argument. + // + n = line.size (); + for (++p; p < n; ++p) + { + char c (line[p]); + if (c != ' ' && c != '\t' && c != '\r') + break; + } + } + else if (!skip_) + skip_ = (line == "--"); + + string s2 (line, p != string::npos ? p : 0); + + // If the string (which is an option value or argument) is + // wrapped in quotes, remove them. + // + n = s2.size (); + char cf (s2[0]), cl (s2[n - 1]); + + if (cf == '"' || cf == '\'' || cl == '"' || cl == '\'') + { + if (n == 1 || cf != cl) + throw unmatched_quote (s2); + + s2 = string (s2, 1, n - 2); + } + + if (!s1.empty ()) + { + // See if this is another file option. + // + const option_info* oi; + if (!skip_ && (oi = find (s1.c_str ()))) + { + if (s2.empty ()) + throw missing_value (oi->option); + + if (oi->search_func != 0) + { + string f (oi->search_func (s2.c_str (), oi->arg)); + if (!f.empty ()) + load (f); + } + else + { + // If the path of the file being parsed is not simple and the + // path of the file that needs to be loaded is relative, then + // complete the latter using the former as a base. + // +#ifndef _WIN32 + string::size_type p (file.find_last_of ('/')); + bool c (p != string::npos && s2[0] != '/'); +#else + string::size_type p (file.find_last_of ("/\\")); + bool c (p != string::npos && s2[1] != ':'); +#endif + if (c) + s2.insert (0, file, 0, p + 1); + + load (s2); + } + + continue; + } + + a.value = s1; + args_.push_back (a); + } + + a.value = s2; + args_.push_back (a); + } + } + + void options:: + push_back (const option& o) + { + container_type::size_type n (size ()); + container_type::push_back (o); + map_[o.name ()] = n; + + for (option_names::const_iterator i (o.aliases ().begin ()); + i != o.aliases ().end (); ++i) + map_[*i] = n; + } + + template <typename X> + struct parser + { + static void + parse (X& x, bool& xs, scanner& s) + { + using namespace std; + + const char* o (s.next ()); + if (s.more ()) + { + string v (s.next ()); + istringstream is (v); + if (!(is >> x && is.peek () == istringstream::traits_type::eof ())) + throw invalid_value (o, v); + } + else + throw missing_value (o); + + xs = true; + } + }; + + template <> + struct parser<bool> + { + static void + parse (bool& x, bool& xs, scanner& s) + { + const char* o (s.next ()); + + if (s.more ()) + { + const char* v (s.next ()); + + if (std::strcmp (v, "1") == 0 || + std::strcmp (v, "true") == 0 || + std::strcmp (v, "TRUE") == 0 || + std::strcmp (v, "True") == 0) + x = true; + else if (std::strcmp (v, "0") == 0 || + std::strcmp (v, "false") == 0 || + std::strcmp (v, "FALSE") == 0 || + std::strcmp (v, "False") == 0) + x = false; + else + throw invalid_value (o, v); + } + else + throw missing_value (o); + + xs = true; + } + }; + + template <> + struct parser<std::string> + { + static void + parse (std::string& x, bool& xs, scanner& s) + { + const char* o (s.next ()); + + if (s.more ()) + x = s.next (); + else + throw missing_value (o); + + xs = true; + } + }; + + template <typename X> + struct parser<std::pair<X, std::size_t> > + { + static void + parse (std::pair<X, std::size_t>& x, bool& xs, scanner& s) + { + x.second = s.position (); + parser<X>::parse (x.first, xs, s); + } + }; + + template <typename X> + struct parser<std::vector<X> > + { + static void + parse (std::vector<X>& c, bool& xs, scanner& s) + { + X x; + bool dummy; + parser<X>::parse (x, dummy, s); + c.push_back (x); + xs = true; + } + }; + + template <typename X, typename C> + struct parser<std::set<X, C> > + { + static void + parse (std::set<X, C>& c, bool& xs, scanner& s) + { + X x; + bool dummy; + parser<X>::parse (x, dummy, s); + c.insert (x); + xs = true; + } + }; + + template <typename K, typename V, typename C> + struct parser<std::map<K, V, C> > + { + static void + parse (std::map<K, V, C>& m, bool& xs, scanner& s) + { + const char* o (s.next ()); + + if (s.more ()) + { + std::size_t pos (s.position ()); + std::string ov (s.next ()); + std::string::size_type p = ov.find ('='); + + K k = K (); + V v = V (); + std::string kstr (ov, 0, p); + std::string vstr (ov, (p != std::string::npos ? p + 1 : ov.size ())); + + int ac (2); + char* av[] = + { + const_cast<char*> (o), + 0 + }; + + bool dummy; + if (!kstr.empty ()) + { + av[1] = const_cast<char*> (kstr.c_str ()); + argv_scanner s (0, ac, av, false, pos); + parser<K>::parse (k, dummy, s); + } + + if (!vstr.empty ()) + { + av[1] = const_cast<char*> (vstr.c_str ()); + argv_scanner s (0, ac, av, false, pos); + parser<V>::parse (v, dummy, s); + } + + m[k] = v; + } + else + throw missing_value (o); + + xs = true; + } + }; + + template <typename X, typename T, T X::*M> + void + thunk (X& x, scanner& s) + { + parser<T>::parse (x.*M, s); + } + + template <typename X, bool X::*M> + void + thunk (X& x, scanner& s) + { + s.next (); + x.*M = true; + } + + template <typename X, typename T, T X::*M, bool X::*S> + void + thunk (X& x, scanner& s) + { + parser<T>::parse (x.*M, x.*S, s); + } + } +} + +#include <map> + +namespace brep +{ + namespace options + { + // handler + // + + handler:: + handler () + : email_ (), + email_specified_ (false), + host_ (), + host_specified_ (false), + root_ ("/"), + root_specified_ (false), + tenant_name_ ("tenant"), + tenant_name_specified_ (false), + verbosity_ (0), + verbosity_specified_ (false) + { + } + + handler:: + handler (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : email_ (), + email_specified_ (false), + host_ (), + host_specified_ (false), + root_ ("/"), + root_specified_ (false), + tenant_name_ ("tenant"), + tenant_name_specified_ (false), + verbosity_ (0), + verbosity_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + handler:: + handler (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : email_ (), + email_specified_ (false), + host_ (), + host_specified_ (false), + root_ ("/"), + root_specified_ (false), + tenant_name_ ("tenant"), + tenant_name_specified_ (false), + verbosity_ (0), + verbosity_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + handler:: + handler (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : email_ (), + email_specified_ (false), + host_ (), + host_specified_ (false), + root_ ("/"), + root_specified_ (false), + tenant_name_ ("tenant"), + tenant_name_specified_ (false), + verbosity_ (0), + verbosity_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + handler:: + handler (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : email_ (), + email_specified_ (false), + host_ (), + host_specified_ (false), + root_ ("/"), + root_specified_ (false), + tenant_name_ ("tenant"), + tenant_name_specified_ (false), + verbosity_ (0), + verbosity_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + handler:: + handler (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : email_ (), + email_specified_ (false), + host_ (), + host_specified_ (false), + root_ ("/"), + root_specified_ (false), + tenant_name_ ("tenant"), + tenant_name_specified_ (false), + verbosity_ (0), + verbosity_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para handler:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "email <email> Repository email." << ::std::endl; + + os << "host <host> Repository host." << ::std::endl; + + os << "root <path> Repository root." << ::std::endl; + + os << "tenant-name <name> Name to call the tenant values" << ::std::endl + << " on web pages." << ::std::endl; + + os << "verbosity <level> Trace verbosity level." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_handler_desc_type: ::brep::cli::options + { + _cli_handler_desc_type () + { + ::brep::options::handler::fill (*this); + } + }; + + void handler:: + fill (::brep::cli::options& os) + { + // email + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("email", a, false, dv); + os.push_back (o); + } + + // host + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("host", a, false, dv); + os.push_back (o); + } + + // root + // + { + ::brep::cli::option_names a; + std::string dv ("/"); + ::brep::cli::option o ("root", a, false, dv); + os.push_back (o); + } + + // tenant-name + // + { + ::brep::cli::option_names a; + std::string dv ("tenant"); + ::brep::cli::option o ("tenant-name", a, false, dv); + os.push_back (o); + } + + // verbosity + // + { + ::brep::cli::option_names a; + std::string dv ("0"); + ::brep::cli::option o ("verbosity", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& handler:: + description () + { + static _cli_handler_desc_type _cli_handler_desc_; + return _cli_handler_desc_; + } + + typedef + std::map<std::string, void (*) (handler&, ::brep::cli::scanner&)> + _cli_handler_map; + + static _cli_handler_map _cli_handler_map_; + + struct _cli_handler_map_init + { + _cli_handler_map_init () + { + _cli_handler_map_["email"] = + &::brep::cli::thunk< handler, string, &handler::email_, + &handler::email_specified_ >; + _cli_handler_map_["host"] = + &::brep::cli::thunk< handler, string, &handler::host_, + &handler::host_specified_ >; + _cli_handler_map_["root"] = + &::brep::cli::thunk< handler, dir_path, &handler::root_, + &handler::root_specified_ >; + _cli_handler_map_["tenant-name"] = + &::brep::cli::thunk< handler, string, &handler::tenant_name_, + &handler::tenant_name_specified_ >; + _cli_handler_map_["verbosity"] = + &::brep::cli::thunk< handler, uint16_t, &handler::verbosity_, + &handler::verbosity_specified_ >; + } + }; + + static _cli_handler_map_init _cli_handler_map_init_; + + bool handler:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_handler_map::const_iterator i (_cli_handler_map_.find (o)); + + if (i != _cli_handler_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool handler:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // openssl_options + // + + openssl_options:: + openssl_options () + : openssl_ ("openssl"), + openssl_specified_ (false), + openssl_option_ (), + openssl_option_specified_ (false), + openssl_envvar_ (), + openssl_envvar_specified_ (false) + { + } + + openssl_options:: + openssl_options (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : openssl_ ("openssl"), + openssl_specified_ (false), + openssl_option_ (), + openssl_option_specified_ (false), + openssl_envvar_ (), + openssl_envvar_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + openssl_options:: + openssl_options (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : openssl_ ("openssl"), + openssl_specified_ (false), + openssl_option_ (), + openssl_option_specified_ (false), + openssl_envvar_ (), + openssl_envvar_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + openssl_options:: + openssl_options (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : openssl_ ("openssl"), + openssl_specified_ (false), + openssl_option_ (), + openssl_option_specified_ (false), + openssl_envvar_ (), + openssl_envvar_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + openssl_options:: + openssl_options (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : openssl_ ("openssl"), + openssl_specified_ (false), + openssl_option_ (), + openssl_option_specified_ (false), + openssl_envvar_ (), + openssl_envvar_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + openssl_options:: + openssl_options (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : openssl_ ("openssl"), + openssl_specified_ (false), + openssl_option_ (), + openssl_option_specified_ (false), + openssl_envvar_ (), + openssl_envvar_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para openssl_options:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "openssl <path> The openssl program to be used" << ::std::endl + << " for crypto operations." << ::std::endl; + + os << "openssl-option <opt> Additional option to be passed" << ::std::endl + << " to the openssl program (see" << ::std::endl + << " openssl for details)." << ::std::endl; + + os << "openssl-envvar <name>[=value] Environment variable to be set" << ::std::endl + << " (<name>=<value>) or unset (just" << ::std::endl + << " <name>) for the openssl program" << ::std::endl + << " (see openssl for details)." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_openssl_options_desc_type: ::brep::cli::options + { + _cli_openssl_options_desc_type () + { + ::brep::options::openssl_options::fill (*this); + } + }; + + void openssl_options:: + fill (::brep::cli::options& os) + { + // openssl + // + { + ::brep::cli::option_names a; + std::string dv ("openssl"); + ::brep::cli::option o ("openssl", a, false, dv); + os.push_back (o); + } + + // openssl-option + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("openssl-option", a, false, dv); + os.push_back (o); + } + + // openssl-envvar + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("openssl-envvar", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& openssl_options:: + description () + { + static _cli_openssl_options_desc_type _cli_openssl_options_desc_; + return _cli_openssl_options_desc_; + } + + typedef + std::map<std::string, void (*) (openssl_options&, ::brep::cli::scanner&)> + _cli_openssl_options_map; + + static _cli_openssl_options_map _cli_openssl_options_map_; + + struct _cli_openssl_options_map_init + { + _cli_openssl_options_map_init () + { + _cli_openssl_options_map_["openssl"] = + &::brep::cli::thunk< openssl_options, path, &openssl_options::openssl_, + &openssl_options::openssl_specified_ >; + _cli_openssl_options_map_["openssl-option"] = + &::brep::cli::thunk< openssl_options, strings, &openssl_options::openssl_option_, + &openssl_options::openssl_option_specified_ >; + _cli_openssl_options_map_["openssl-envvar"] = + &::brep::cli::thunk< openssl_options, strings, &openssl_options::openssl_envvar_, + &openssl_options::openssl_envvar_specified_ >; + } + }; + + static _cli_openssl_options_map_init _cli_openssl_options_map_init_; + + bool openssl_options:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_openssl_options_map::const_iterator i (_cli_openssl_options_map_.find (o)); + + if (i != _cli_openssl_options_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool openssl_options:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // package_db + // + + package_db:: + package_db () + : package_db_user_ (), + package_db_user_specified_ (false), + package_db_role_ ("brep"), + package_db_role_specified_ (false), + package_db_password_ (), + package_db_password_specified_ (false), + package_db_name_ ("brep_package"), + package_db_name_specified_ (false), + package_db_host_ (), + package_db_host_specified_ (false), + package_db_port_ (0), + package_db_port_specified_ (false), + package_db_max_connections_ (5), + package_db_max_connections_specified_ (false), + package_db_retry_ (10), + package_db_retry_specified_ (false) + { + } + + package_db:: + package_db (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_db_user_ (), + package_db_user_specified_ (false), + package_db_role_ ("brep"), + package_db_role_specified_ (false), + package_db_password_ (), + package_db_password_specified_ (false), + package_db_name_ ("brep_package"), + package_db_name_specified_ (false), + package_db_host_ (), + package_db_host_specified_ (false), + package_db_port_ (0), + package_db_port_specified_ (false), + package_db_max_connections_ (5), + package_db_max_connections_specified_ (false), + package_db_retry_ (10), + package_db_retry_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + package_db:: + package_db (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_db_user_ (), + package_db_user_specified_ (false), + package_db_role_ ("brep"), + package_db_role_specified_ (false), + package_db_password_ (), + package_db_password_specified_ (false), + package_db_name_ ("brep_package"), + package_db_name_specified_ (false), + package_db_host_ (), + package_db_host_specified_ (false), + package_db_port_ (0), + package_db_port_specified_ (false), + package_db_max_connections_ (5), + package_db_max_connections_specified_ (false), + package_db_retry_ (10), + package_db_retry_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + package_db:: + package_db (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_db_user_ (), + package_db_user_specified_ (false), + package_db_role_ ("brep"), + package_db_role_specified_ (false), + package_db_password_ (), + package_db_password_specified_ (false), + package_db_name_ ("brep_package"), + package_db_name_specified_ (false), + package_db_host_ (), + package_db_host_specified_ (false), + package_db_port_ (0), + package_db_port_specified_ (false), + package_db_max_connections_ (5), + package_db_max_connections_specified_ (false), + package_db_retry_ (10), + package_db_retry_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + package_db:: + package_db (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_db_user_ (), + package_db_user_specified_ (false), + package_db_role_ ("brep"), + package_db_role_specified_ (false), + package_db_password_ (), + package_db_password_specified_ (false), + package_db_name_ ("brep_package"), + package_db_name_specified_ (false), + package_db_host_ (), + package_db_host_specified_ (false), + package_db_port_ (0), + package_db_port_specified_ (false), + package_db_max_connections_ (5), + package_db_max_connections_specified_ (false), + package_db_retry_ (10), + package_db_retry_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + package_db:: + package_db (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_db_user_ (), + package_db_user_specified_ (false), + package_db_role_ ("brep"), + package_db_role_specified_ (false), + package_db_password_ (), + package_db_password_specified_ (false), + package_db_name_ ("brep_package"), + package_db_name_specified_ (false), + package_db_host_ (), + package_db_host_specified_ (false), + package_db_port_ (0), + package_db_port_specified_ (false), + package_db_max_connections_ (5), + package_db_max_connections_specified_ (false), + package_db_retry_ (10), + package_db_retry_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para package_db:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "package-db-user <user> Package database login user" << ::std::endl + << " name." << ::std::endl; + + os << "package-db-role <user> Package database execution user" << ::std::endl + << " name." << ::std::endl; + + os << "package-db-password <pass> Package database password." << ::std::endl; + + os << "package-db-name <name> Package database name." << ::std::endl; + + os << "package-db-host <host> Package database host name," << ::std::endl + << " address, or socket." << ::std::endl; + + os << "package-db-port <port> Package database port number." << ::std::endl; + + os << "package-db-max-connections <num> The maximum number of concurrent" << ::std::endl + << " package database connections per" << ::std::endl + << " web server process." << ::std::endl; + + os << "package-db-retry <num> The maximum number of times to" << ::std::endl + << " retry package database" << ::std::endl + << " transactions in the face of" << ::std::endl + << " recoverable failures (deadlock," << ::std::endl + << " loss of connection, etc)." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_package_db_desc_type: ::brep::cli::options + { + _cli_package_db_desc_type () + { + ::brep::options::package_db::fill (*this); + } + }; + + void package_db:: + fill (::brep::cli::options& os) + { + // package-db-user + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("package-db-user", a, false, dv); + os.push_back (o); + } + + // package-db-role + // + { + ::brep::cli::option_names a; + std::string dv ("brep"); + ::brep::cli::option o ("package-db-role", a, false, dv); + os.push_back (o); + } + + // package-db-password + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("package-db-password", a, false, dv); + os.push_back (o); + } + + // package-db-name + // + { + ::brep::cli::option_names a; + std::string dv ("brep_package"); + ::brep::cli::option o ("package-db-name", a, false, dv); + os.push_back (o); + } + + // package-db-host + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("package-db-host", a, false, dv); + os.push_back (o); + } + + // package-db-port + // + { + ::brep::cli::option_names a; + std::string dv ("0"); + ::brep::cli::option o ("package-db-port", a, false, dv); + os.push_back (o); + } + + // package-db-max-connections + // + { + ::brep::cli::option_names a; + std::string dv ("5"); + ::brep::cli::option o ("package-db-max-connections", a, false, dv); + os.push_back (o); + } + + // package-db-retry + // + { + ::brep::cli::option_names a; + std::string dv ("10"); + ::brep::cli::option o ("package-db-retry", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& package_db:: + description () + { + static _cli_package_db_desc_type _cli_package_db_desc_; + return _cli_package_db_desc_; + } + + typedef + std::map<std::string, void (*) (package_db&, ::brep::cli::scanner&)> + _cli_package_db_map; + + static _cli_package_db_map _cli_package_db_map_; + + struct _cli_package_db_map_init + { + _cli_package_db_map_init () + { + _cli_package_db_map_["package-db-user"] = + &::brep::cli::thunk< package_db, string, &package_db::package_db_user_, + &package_db::package_db_user_specified_ >; + _cli_package_db_map_["package-db-role"] = + &::brep::cli::thunk< package_db, string, &package_db::package_db_role_, + &package_db::package_db_role_specified_ >; + _cli_package_db_map_["package-db-password"] = + &::brep::cli::thunk< package_db, string, &package_db::package_db_password_, + &package_db::package_db_password_specified_ >; + _cli_package_db_map_["package-db-name"] = + &::brep::cli::thunk< package_db, string, &package_db::package_db_name_, + &package_db::package_db_name_specified_ >; + _cli_package_db_map_["package-db-host"] = + &::brep::cli::thunk< package_db, string, &package_db::package_db_host_, + &package_db::package_db_host_specified_ >; + _cli_package_db_map_["package-db-port"] = + &::brep::cli::thunk< package_db, uint16_t, &package_db::package_db_port_, + &package_db::package_db_port_specified_ >; + _cli_package_db_map_["package-db-max-connections"] = + &::brep::cli::thunk< package_db, size_t, &package_db::package_db_max_connections_, + &package_db::package_db_max_connections_specified_ >; + _cli_package_db_map_["package-db-retry"] = + &::brep::cli::thunk< package_db, size_t, &package_db::package_db_retry_, + &package_db::package_db_retry_specified_ >; + } + }; + + static _cli_package_db_map_init _cli_package_db_map_init_; + + bool package_db:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_package_db_map::const_iterator i (_cli_package_db_map_.find (o)); + + if (i != _cli_package_db_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool package_db:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // build + // + + build:: + build () + : build_config_ (), + build_config_specified_ (false), + build_bot_agent_keys_ (), + build_bot_agent_keys_specified_ (false), + build_forced_rebuild_timeout_ (600), + build_forced_rebuild_timeout_specified_ (false), + build_soft_rebuild_timeout_ (86400), + build_soft_rebuild_timeout_specified_ (false), + build_alt_soft_rebuild_timeout_ (), + build_alt_soft_rebuild_timeout_specified_ (false), + build_alt_soft_rebuild_start_ (), + build_alt_soft_rebuild_start_specified_ (false), + build_alt_soft_rebuild_stop_ (), + build_alt_soft_rebuild_stop_specified_ (false), + build_hard_rebuild_timeout_ (604800), + build_hard_rebuild_timeout_specified_ (false), + build_alt_hard_rebuild_timeout_ (), + build_alt_hard_rebuild_timeout_specified_ (false), + build_alt_hard_rebuild_start_ (), + build_alt_hard_rebuild_start_specified_ (false), + build_alt_hard_rebuild_stop_ (), + build_alt_hard_rebuild_stop_specified_ (false) + { + } + + build:: + build (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_config_ (), + build_config_specified_ (false), + build_bot_agent_keys_ (), + build_bot_agent_keys_specified_ (false), + build_forced_rebuild_timeout_ (600), + build_forced_rebuild_timeout_specified_ (false), + build_soft_rebuild_timeout_ (86400), + build_soft_rebuild_timeout_specified_ (false), + build_alt_soft_rebuild_timeout_ (), + build_alt_soft_rebuild_timeout_specified_ (false), + build_alt_soft_rebuild_start_ (), + build_alt_soft_rebuild_start_specified_ (false), + build_alt_soft_rebuild_stop_ (), + build_alt_soft_rebuild_stop_specified_ (false), + build_hard_rebuild_timeout_ (604800), + build_hard_rebuild_timeout_specified_ (false), + build_alt_hard_rebuild_timeout_ (), + build_alt_hard_rebuild_timeout_specified_ (false), + build_alt_hard_rebuild_start_ (), + build_alt_hard_rebuild_start_specified_ (false), + build_alt_hard_rebuild_stop_ (), + build_alt_hard_rebuild_stop_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + build:: + build (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_config_ (), + build_config_specified_ (false), + build_bot_agent_keys_ (), + build_bot_agent_keys_specified_ (false), + build_forced_rebuild_timeout_ (600), + build_forced_rebuild_timeout_specified_ (false), + build_soft_rebuild_timeout_ (86400), + build_soft_rebuild_timeout_specified_ (false), + build_alt_soft_rebuild_timeout_ (), + build_alt_soft_rebuild_timeout_specified_ (false), + build_alt_soft_rebuild_start_ (), + build_alt_soft_rebuild_start_specified_ (false), + build_alt_soft_rebuild_stop_ (), + build_alt_soft_rebuild_stop_specified_ (false), + build_hard_rebuild_timeout_ (604800), + build_hard_rebuild_timeout_specified_ (false), + build_alt_hard_rebuild_timeout_ (), + build_alt_hard_rebuild_timeout_specified_ (false), + build_alt_hard_rebuild_start_ (), + build_alt_hard_rebuild_start_specified_ (false), + build_alt_hard_rebuild_stop_ (), + build_alt_hard_rebuild_stop_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + build:: + build (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_config_ (), + build_config_specified_ (false), + build_bot_agent_keys_ (), + build_bot_agent_keys_specified_ (false), + build_forced_rebuild_timeout_ (600), + build_forced_rebuild_timeout_specified_ (false), + build_soft_rebuild_timeout_ (86400), + build_soft_rebuild_timeout_specified_ (false), + build_alt_soft_rebuild_timeout_ (), + build_alt_soft_rebuild_timeout_specified_ (false), + build_alt_soft_rebuild_start_ (), + build_alt_soft_rebuild_start_specified_ (false), + build_alt_soft_rebuild_stop_ (), + build_alt_soft_rebuild_stop_specified_ (false), + build_hard_rebuild_timeout_ (604800), + build_hard_rebuild_timeout_specified_ (false), + build_alt_hard_rebuild_timeout_ (), + build_alt_hard_rebuild_timeout_specified_ (false), + build_alt_hard_rebuild_start_ (), + build_alt_hard_rebuild_start_specified_ (false), + build_alt_hard_rebuild_stop_ (), + build_alt_hard_rebuild_stop_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build:: + build (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_config_ (), + build_config_specified_ (false), + build_bot_agent_keys_ (), + build_bot_agent_keys_specified_ (false), + build_forced_rebuild_timeout_ (600), + build_forced_rebuild_timeout_specified_ (false), + build_soft_rebuild_timeout_ (86400), + build_soft_rebuild_timeout_specified_ (false), + build_alt_soft_rebuild_timeout_ (), + build_alt_soft_rebuild_timeout_specified_ (false), + build_alt_soft_rebuild_start_ (), + build_alt_soft_rebuild_start_specified_ (false), + build_alt_soft_rebuild_stop_ (), + build_alt_soft_rebuild_stop_specified_ (false), + build_hard_rebuild_timeout_ (604800), + build_hard_rebuild_timeout_specified_ (false), + build_alt_hard_rebuild_timeout_ (), + build_alt_hard_rebuild_timeout_specified_ (false), + build_alt_hard_rebuild_start_ (), + build_alt_hard_rebuild_start_specified_ (false), + build_alt_hard_rebuild_stop_ (), + build_alt_hard_rebuild_stop_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build:: + build (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_config_ (), + build_config_specified_ (false), + build_bot_agent_keys_ (), + build_bot_agent_keys_specified_ (false), + build_forced_rebuild_timeout_ (600), + build_forced_rebuild_timeout_specified_ (false), + build_soft_rebuild_timeout_ (86400), + build_soft_rebuild_timeout_specified_ (false), + build_alt_soft_rebuild_timeout_ (), + build_alt_soft_rebuild_timeout_specified_ (false), + build_alt_soft_rebuild_start_ (), + build_alt_soft_rebuild_start_specified_ (false), + build_alt_soft_rebuild_stop_ (), + build_alt_soft_rebuild_stop_specified_ (false), + build_hard_rebuild_timeout_ (604800), + build_hard_rebuild_timeout_specified_ (false), + build_alt_hard_rebuild_timeout_ (), + build_alt_hard_rebuild_timeout_specified_ (false), + build_alt_hard_rebuild_start_ (), + build_alt_hard_rebuild_start_specified_ (false), + build_alt_hard_rebuild_stop_ (), + build_alt_hard_rebuild_stop_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para build:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // openssl_options base + // + p = ::brep::options::openssl_options::print_usage (os, p); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "build-config <buildtab> Build configuration file." << ::std::endl; + + os << "build-bot-agent-keys <dir> Directory containing build bot" << ::std::endl + << " agent public keys." << ::std::endl; + + os << "build-forced-rebuild-timeout <seconds> Time to wait before considering" << ::std::endl + << " a package for a forced rebuild." << ::std::endl; + + os << "build-soft-rebuild-timeout <seconds> Time to wait before considering" << ::std::endl + << " a package for a soft rebuild" << ::std::endl + << " (only to be performed if the" << ::std::endl + << " build environment or any of the" << ::std::endl + << " package dependencies have" << ::std::endl + << " changed)." << ::std::endl; + + os << "build-alt-soft-rebuild-timeout <seconds> Alternative package soft rebuild" << ::std::endl + << " timeout to use instead of the" << ::std::endl + << " soft rebuild timeout (see" << ::std::endl + << " build-soft-rebuild-timeout for" << ::std::endl + << " details) during the time" << ::std::endl + << " interval specified with the" << ::std::endl + << " build-alt-soft-rebuild-start and" << ::std::endl + << " build-alt-soft-rebuild-stop" << ::std::endl + << " options." << ::std::endl; + + os << "build-alt-soft-rebuild-start <hours>:<minutes> The start time of the" << ::std::endl + << " alternative package soft rebuild" << ::std::endl + << " timeout (see" << ::std::endl + << " build-alt-soft-rebuild-timeout" << ::std::endl + << " for details)." << ::std::endl; + + os << "build-alt-soft-rebuild-stop <hours>:<minutes> The end time of the alternative" << ::std::endl + << " package soft rebuild timeout" << ::std::endl + << " (see" << ::std::endl + << " build-alt-soft-rebuild-timeout" << ::std::endl + << " for details)." << ::std::endl; + + os << "build-hard-rebuild-timeout <seconds> Time to wait before considering" << ::std::endl + << " a package for a hard rebuild (to" << ::std::endl + << " be performed unconditionally)." << ::std::endl; + + os << "build-alt-hard-rebuild-timeout <seconds> Alternative package hard rebuild" << ::std::endl + << " timeout." << ::std::endl; + + os << "build-alt-hard-rebuild-start <hours>:<minutes> The start time of the" << ::std::endl + << " alternative package hard rebuild" << ::std::endl + << " timeout (see" << ::std::endl + << " build-alt-hard-rebuild-timeout" << ::std::endl + << " for details)." << ::std::endl; + + os << "build-alt-hard-rebuild-stop <hours>:<minutes> The end time of the alternative" << ::std::endl + << " package hard rebuild timeout" << ::std::endl + << " (see" << ::std::endl + << " build-alt-hard-rebuild-timeout" << ::std::endl + << " for details)." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_build_desc_type: ::brep::cli::options + { + _cli_build_desc_type () + { + ::brep::options::build::fill (*this); + } + }; + + void build:: + fill (::brep::cli::options& os) + { + // openssl_options base + // + ::brep::options::openssl_options::fill (os); + + // build-config + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-config", a, false, dv); + os.push_back (o); + } + + // build-bot-agent-keys + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-bot-agent-keys", a, false, dv); + os.push_back (o); + } + + // build-forced-rebuild-timeout + // + { + ::brep::cli::option_names a; + std::string dv ("600"); + ::brep::cli::option o ("build-forced-rebuild-timeout", a, false, dv); + os.push_back (o); + } + + // build-soft-rebuild-timeout + // + { + ::brep::cli::option_names a; + std::string dv ("86400"); + ::brep::cli::option o ("build-soft-rebuild-timeout", a, false, dv); + os.push_back (o); + } + + // build-alt-soft-rebuild-timeout + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-alt-soft-rebuild-timeout", a, false, dv); + os.push_back (o); + } + + // build-alt-soft-rebuild-start + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-alt-soft-rebuild-start", a, false, dv); + os.push_back (o); + } + + // build-alt-soft-rebuild-stop + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-alt-soft-rebuild-stop", a, false, dv); + os.push_back (o); + } + + // build-hard-rebuild-timeout + // + { + ::brep::cli::option_names a; + std::string dv ("604800"); + ::brep::cli::option o ("build-hard-rebuild-timeout", a, false, dv); + os.push_back (o); + } + + // build-alt-hard-rebuild-timeout + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-alt-hard-rebuild-timeout", a, false, dv); + os.push_back (o); + } + + // build-alt-hard-rebuild-start + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-alt-hard-rebuild-start", a, false, dv); + os.push_back (o); + } + + // build-alt-hard-rebuild-stop + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-alt-hard-rebuild-stop", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& build:: + description () + { + static _cli_build_desc_type _cli_build_desc_; + return _cli_build_desc_; + } + + typedef + std::map<std::string, void (*) (build&, ::brep::cli::scanner&)> + _cli_build_map; + + static _cli_build_map _cli_build_map_; + + struct _cli_build_map_init + { + _cli_build_map_init () + { + _cli_build_map_["build-config"] = + &::brep::cli::thunk< build, path, &build::build_config_, + &build::build_config_specified_ >; + _cli_build_map_["build-bot-agent-keys"] = + &::brep::cli::thunk< build, dir_path, &build::build_bot_agent_keys_, + &build::build_bot_agent_keys_specified_ >; + _cli_build_map_["build-forced-rebuild-timeout"] = + &::brep::cli::thunk< build, size_t, &build::build_forced_rebuild_timeout_, + &build::build_forced_rebuild_timeout_specified_ >; + _cli_build_map_["build-soft-rebuild-timeout"] = + &::brep::cli::thunk< build, size_t, &build::build_soft_rebuild_timeout_, + &build::build_soft_rebuild_timeout_specified_ >; + _cli_build_map_["build-alt-soft-rebuild-timeout"] = + &::brep::cli::thunk< build, size_t, &build::build_alt_soft_rebuild_timeout_, + &build::build_alt_soft_rebuild_timeout_specified_ >; + _cli_build_map_["build-alt-soft-rebuild-start"] = + &::brep::cli::thunk< build, duration, &build::build_alt_soft_rebuild_start_, + &build::build_alt_soft_rebuild_start_specified_ >; + _cli_build_map_["build-alt-soft-rebuild-stop"] = + &::brep::cli::thunk< build, duration, &build::build_alt_soft_rebuild_stop_, + &build::build_alt_soft_rebuild_stop_specified_ >; + _cli_build_map_["build-hard-rebuild-timeout"] = + &::brep::cli::thunk< build, size_t, &build::build_hard_rebuild_timeout_, + &build::build_hard_rebuild_timeout_specified_ >; + _cli_build_map_["build-alt-hard-rebuild-timeout"] = + &::brep::cli::thunk< build, size_t, &build::build_alt_hard_rebuild_timeout_, + &build::build_alt_hard_rebuild_timeout_specified_ >; + _cli_build_map_["build-alt-hard-rebuild-start"] = + &::brep::cli::thunk< build, duration, &build::build_alt_hard_rebuild_start_, + &build::build_alt_hard_rebuild_start_specified_ >; + _cli_build_map_["build-alt-hard-rebuild-stop"] = + &::brep::cli::thunk< build, duration, &build::build_alt_hard_rebuild_stop_, + &build::build_alt_hard_rebuild_stop_specified_ >; + } + }; + + static _cli_build_map_init _cli_build_map_init_; + + bool build:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_build_map::const_iterator i (_cli_build_map_.find (o)); + + if (i != _cli_build_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // openssl_options base + // + if (::brep::options::openssl_options::_parse (o, s)) + return true; + + return false; + } + + bool build:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // build_db + // + + build_db:: + build_db () + : build_db_user_ (), + build_db_user_specified_ (false), + build_db_role_ ("brep"), + build_db_role_specified_ (false), + build_db_password_ (), + build_db_password_specified_ (false), + build_db_name_ ("brep_build"), + build_db_name_specified_ (false), + build_db_host_ (), + build_db_host_specified_ (false), + build_db_port_ (0), + build_db_port_specified_ (false), + build_db_max_connections_ (5), + build_db_max_connections_specified_ (false), + build_db_retry_ (10), + build_db_retry_specified_ (false) + { + } + + build_db:: + build_db (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_db_user_ (), + build_db_user_specified_ (false), + build_db_role_ ("brep"), + build_db_role_specified_ (false), + build_db_password_ (), + build_db_password_specified_ (false), + build_db_name_ ("brep_build"), + build_db_name_specified_ (false), + build_db_host_ (), + build_db_host_specified_ (false), + build_db_port_ (0), + build_db_port_specified_ (false), + build_db_max_connections_ (5), + build_db_max_connections_specified_ (false), + build_db_retry_ (10), + build_db_retry_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + build_db:: + build_db (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_db_user_ (), + build_db_user_specified_ (false), + build_db_role_ ("brep"), + build_db_role_specified_ (false), + build_db_password_ (), + build_db_password_specified_ (false), + build_db_name_ ("brep_build"), + build_db_name_specified_ (false), + build_db_host_ (), + build_db_host_specified_ (false), + build_db_port_ (0), + build_db_port_specified_ (false), + build_db_max_connections_ (5), + build_db_max_connections_specified_ (false), + build_db_retry_ (10), + build_db_retry_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + build_db:: + build_db (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_db_user_ (), + build_db_user_specified_ (false), + build_db_role_ ("brep"), + build_db_role_specified_ (false), + build_db_password_ (), + build_db_password_specified_ (false), + build_db_name_ ("brep_build"), + build_db_name_specified_ (false), + build_db_host_ (), + build_db_host_specified_ (false), + build_db_port_ (0), + build_db_port_specified_ (false), + build_db_max_connections_ (5), + build_db_max_connections_specified_ (false), + build_db_retry_ (10), + build_db_retry_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_db:: + build_db (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_db_user_ (), + build_db_user_specified_ (false), + build_db_role_ ("brep"), + build_db_role_specified_ (false), + build_db_password_ (), + build_db_password_specified_ (false), + build_db_name_ ("brep_build"), + build_db_name_specified_ (false), + build_db_host_ (), + build_db_host_specified_ (false), + build_db_port_ (0), + build_db_port_specified_ (false), + build_db_max_connections_ (5), + build_db_max_connections_specified_ (false), + build_db_retry_ (10), + build_db_retry_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_db:: + build_db (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_db_user_ (), + build_db_user_specified_ (false), + build_db_role_ ("brep"), + build_db_role_specified_ (false), + build_db_password_ (), + build_db_password_specified_ (false), + build_db_name_ ("brep_build"), + build_db_name_specified_ (false), + build_db_host_ (), + build_db_host_specified_ (false), + build_db_port_ (0), + build_db_port_specified_ (false), + build_db_max_connections_ (5), + build_db_max_connections_specified_ (false), + build_db_retry_ (10), + build_db_retry_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para build_db:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "build-db-user <user> Build database login user name." << ::std::endl; + + os << "build-db-role <user> Build database execution user" << ::std::endl + << " name." << ::std::endl; + + os << "build-db-password <pass> Build database password." << ::std::endl; + + os << "build-db-name <name> Build database name." << ::std::endl; + + os << "build-db-host <host> Build database host name," << ::std::endl + << " address, or socket." << ::std::endl; + + os << "build-db-port <port> Build database port number." << ::std::endl; + + os << "build-db-max-connections <num> The maximum number of concurrent" << ::std::endl + << " build database connections per" << ::std::endl + << " web server process." << ::std::endl; + + os << "build-db-retry <num> The maximum number of times to" << ::std::endl + << " retry build database" << ::std::endl + << " transactions in the face of" << ::std::endl + << " recoverable failures (deadlock," << ::std::endl + << " loss of connection, etc)." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_build_db_desc_type: ::brep::cli::options + { + _cli_build_db_desc_type () + { + ::brep::options::build_db::fill (*this); + } + }; + + void build_db:: + fill (::brep::cli::options& os) + { + // build-db-user + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-db-user", a, false, dv); + os.push_back (o); + } + + // build-db-role + // + { + ::brep::cli::option_names a; + std::string dv ("brep"); + ::brep::cli::option o ("build-db-role", a, false, dv); + os.push_back (o); + } + + // build-db-password + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-db-password", a, false, dv); + os.push_back (o); + } + + // build-db-name + // + { + ::brep::cli::option_names a; + std::string dv ("brep_build"); + ::brep::cli::option o ("build-db-name", a, false, dv); + os.push_back (o); + } + + // build-db-host + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-db-host", a, false, dv); + os.push_back (o); + } + + // build-db-port + // + { + ::brep::cli::option_names a; + std::string dv ("0"); + ::brep::cli::option o ("build-db-port", a, false, dv); + os.push_back (o); + } + + // build-db-max-connections + // + { + ::brep::cli::option_names a; + std::string dv ("5"); + ::brep::cli::option o ("build-db-max-connections", a, false, dv); + os.push_back (o); + } + + // build-db-retry + // + { + ::brep::cli::option_names a; + std::string dv ("10"); + ::brep::cli::option o ("build-db-retry", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& build_db:: + description () + { + static _cli_build_db_desc_type _cli_build_db_desc_; + return _cli_build_db_desc_; + } + + typedef + std::map<std::string, void (*) (build_db&, ::brep::cli::scanner&)> + _cli_build_db_map; + + static _cli_build_db_map _cli_build_db_map_; + + struct _cli_build_db_map_init + { + _cli_build_db_map_init () + { + _cli_build_db_map_["build-db-user"] = + &::brep::cli::thunk< build_db, string, &build_db::build_db_user_, + &build_db::build_db_user_specified_ >; + _cli_build_db_map_["build-db-role"] = + &::brep::cli::thunk< build_db, string, &build_db::build_db_role_, + &build_db::build_db_role_specified_ >; + _cli_build_db_map_["build-db-password"] = + &::brep::cli::thunk< build_db, string, &build_db::build_db_password_, + &build_db::build_db_password_specified_ >; + _cli_build_db_map_["build-db-name"] = + &::brep::cli::thunk< build_db, string, &build_db::build_db_name_, + &build_db::build_db_name_specified_ >; + _cli_build_db_map_["build-db-host"] = + &::brep::cli::thunk< build_db, string, &build_db::build_db_host_, + &build_db::build_db_host_specified_ >; + _cli_build_db_map_["build-db-port"] = + &::brep::cli::thunk< build_db, uint16_t, &build_db::build_db_port_, + &build_db::build_db_port_specified_ >; + _cli_build_db_map_["build-db-max-connections"] = + &::brep::cli::thunk< build_db, size_t, &build_db::build_db_max_connections_, + &build_db::build_db_max_connections_specified_ >; + _cli_build_db_map_["build-db-retry"] = + &::brep::cli::thunk< build_db, size_t, &build_db::build_db_retry_, + &build_db::build_db_retry_specified_ >; + } + }; + + static _cli_build_db_map_init _cli_build_db_map_init_; + + bool build_db:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_build_db_map::const_iterator i (_cli_build_db_map_.find (o)); + + if (i != _cli_build_db_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool build_db:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // page + // + + page:: + page () + : logo_ (), + logo_specified_ (false), + menu_ (), + menu_specified_ (false) + { + } + + page:: + page (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : logo_ (), + logo_specified_ (false), + menu_ (), + menu_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + page:: + page (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : logo_ (), + logo_specified_ (false), + menu_ (), + menu_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + page:: + page (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : logo_ (), + logo_specified_ (false), + menu_ (), + menu_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + page:: + page (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : logo_ (), + logo_specified_ (false), + menu_ (), + menu_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + page:: + page (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : logo_ (), + logo_specified_ (false), + menu_ (), + menu_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para page:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "logo <xhtml> Web page logo." << ::std::endl; + + os << "menu <label=link> Web page menu." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_page_desc_type: ::brep::cli::options + { + _cli_page_desc_type () + { + ::brep::options::page::fill (*this); + } + }; + + void page:: + fill (::brep::cli::options& os) + { + // logo + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("logo", a, false, dv); + os.push_back (o); + } + + // menu + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("menu", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& page:: + description () + { + static _cli_page_desc_type _cli_page_desc_; + return _cli_page_desc_; + } + + typedef + std::map<std::string, void (*) (page&, ::brep::cli::scanner&)> + _cli_page_map; + + static _cli_page_map _cli_page_map_; + + struct _cli_page_map_init + { + _cli_page_map_init () + { + _cli_page_map_["logo"] = + &::brep::cli::thunk< page, web::xhtml::fragment, &page::logo_, + &page::logo_specified_ >; + _cli_page_map_["menu"] = + &::brep::cli::thunk< page, vector<page_menu>, &page::menu_, + &page::menu_specified_ >; + } + }; + + static _cli_page_map_init _cli_page_map_init_; + + bool page:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_page_map::const_iterator i (_cli_page_map_.find (o)); + + if (i != _cli_page_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool page:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // search + // + + search:: + search () + : search_page_entries_ (20), + search_page_entries_specified_ (false), + search_pages_ (5), + search_pages_specified_ (false) + { + } + + search:: + search (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : search_page_entries_ (20), + search_page_entries_specified_ (false), + search_pages_ (5), + search_pages_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + search:: + search (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : search_page_entries_ (20), + search_page_entries_specified_ (false), + search_pages_ (5), + search_pages_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + search:: + search (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : search_page_entries_ (20), + search_page_entries_specified_ (false), + search_pages_ (5), + search_pages_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + search:: + search (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : search_page_entries_ (20), + search_page_entries_specified_ (false), + search_pages_ (5), + search_pages_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + search:: + search (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : search_page_entries_ (20), + search_page_entries_specified_ (false), + search_pages_ (5), + search_pages_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para search:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "search-page-entries <num> Number of packages per page." << ::std::endl; + + os << "search-pages <num> Number of pages in navigation" << ::std::endl + << " (pager)." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_search_desc_type: ::brep::cli::options + { + _cli_search_desc_type () + { + ::brep::options::search::fill (*this); + } + }; + + void search:: + fill (::brep::cli::options& os) + { + // search-page-entries + // + { + ::brep::cli::option_names a; + std::string dv ("20"); + ::brep::cli::option o ("search-page-entries", a, false, dv); + os.push_back (o); + } + + // search-pages + // + { + ::brep::cli::option_names a; + std::string dv ("5"); + ::brep::cli::option o ("search-pages", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& search:: + description () + { + static _cli_search_desc_type _cli_search_desc_; + return _cli_search_desc_; + } + + typedef + std::map<std::string, void (*) (search&, ::brep::cli::scanner&)> + _cli_search_map; + + static _cli_search_map _cli_search_map_; + + struct _cli_search_map_init + { + _cli_search_map_init () + { + _cli_search_map_["search-page-entries"] = + &::brep::cli::thunk< search, uint16_t, &search::search_page_entries_, + &search::search_page_entries_specified_ >; + _cli_search_map_["search-pages"] = + &::brep::cli::thunk< search, uint16_t, &search::search_pages_, + &search::search_pages_specified_ >; + } + }; + + static _cli_search_map_init _cli_search_map_init_; + + bool search:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_search_map::const_iterator i (_cli_search_map_.find (o)); + + if (i != _cli_search_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool search:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // package + // + + package:: + package () + : package_description_ (500), + package_description_specified_ (false), + package_changes_ (5000), + package_changes_specified_ (false) + { + } + + package:: + package (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_description_ (500), + package_description_specified_ (false), + package_changes_ (5000), + package_changes_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + package:: + package (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_description_ (500), + package_description_specified_ (false), + package_changes_ (5000), + package_changes_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + package:: + package (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_description_ (500), + package_description_specified_ (false), + package_changes_ (5000), + package_changes_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + package:: + package (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_description_ (500), + package_description_specified_ (false), + package_changes_ (5000), + package_changes_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + package:: + package (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_description_ (500), + package_description_specified_ (false), + package_changes_ (5000), + package_changes_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para package:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "package-description <len> Number of package description" << ::std::endl + << " characters to display in brief" << ::std::endl + << " pages." << ::std::endl; + + os << "package-changes <len> Number of package changes" << ::std::endl + << " characters to display in brief" << ::std::endl + << " pages." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_package_desc_type: ::brep::cli::options + { + _cli_package_desc_type () + { + ::brep::options::package::fill (*this); + } + }; + + void package:: + fill (::brep::cli::options& os) + { + // package-description + // + { + ::brep::cli::option_names a; + std::string dv ("500"); + ::brep::cli::option o ("package-description", a, false, dv); + os.push_back (o); + } + + // package-changes + // + { + ::brep::cli::option_names a; + std::string dv ("5000"); + ::brep::cli::option o ("package-changes", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& package:: + description () + { + static _cli_package_desc_type _cli_package_desc_; + return _cli_package_desc_; + } + + typedef + std::map<std::string, void (*) (package&, ::brep::cli::scanner&)> + _cli_package_map; + + static _cli_package_map _cli_package_map_; + + struct _cli_package_map_init + { + _cli_package_map_init () + { + _cli_package_map_["package-description"] = + &::brep::cli::thunk< package, uint16_t, &package::package_description_, + &package::package_description_specified_ >; + _cli_package_map_["package-changes"] = + &::brep::cli::thunk< package, uint16_t, &package::package_changes_, + &package::package_changes_specified_ >; + } + }; + + static _cli_package_map_init _cli_package_map_init_; + + bool package:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_package_map::const_iterator i (_cli_package_map_.find (o)); + + if (i != _cli_package_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool package:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // packages + // + + packages:: + packages () + : search_title_ ("Packages"), + search_title_specified_ (false) + { + } + + packages:: + packages (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : search_title_ ("Packages"), + search_title_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + packages:: + packages (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : search_title_ ("Packages"), + search_title_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + packages:: + packages (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : search_title_ ("Packages"), + search_title_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + packages:: + packages (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : search_title_ ("Packages"), + search_title_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + packages:: + packages (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : search_title_ ("Packages"), + search_title_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para packages:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // search base + // + p = ::brep::options::search::print_usage (os, p); + + // package_db base + // + p = ::brep::options::package_db::print_usage (os, p); + + // page base + // + p = ::brep::options::page::print_usage (os, p); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "search-title <text> Package search page title." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_packages_desc_type: ::brep::cli::options + { + _cli_packages_desc_type () + { + ::brep::options::packages::fill (*this); + } + }; + + void packages:: + fill (::brep::cli::options& os) + { + // search base + // + ::brep::options::search::fill (os); + + // package_db base + // + ::brep::options::package_db::fill (os); + + // page base + // + ::brep::options::page::fill (os); + + // handler base + // + ::brep::options::handler::fill (os); + + // search-title + // + { + ::brep::cli::option_names a; + std::string dv ("Packages"); + ::brep::cli::option o ("search-title", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& packages:: + description () + { + static _cli_packages_desc_type _cli_packages_desc_; + return _cli_packages_desc_; + } + + typedef + std::map<std::string, void (*) (packages&, ::brep::cli::scanner&)> + _cli_packages_map; + + static _cli_packages_map _cli_packages_map_; + + struct _cli_packages_map_init + { + _cli_packages_map_init () + { + _cli_packages_map_["search-title"] = + &::brep::cli::thunk< packages, string, &packages::search_title_, + &packages::search_title_specified_ >; + } + }; + + static _cli_packages_map_init _cli_packages_map_init_; + + bool packages:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_packages_map::const_iterator i (_cli_packages_map_.find (o)); + + if (i != _cli_packages_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // search base + // + if (::brep::options::search::_parse (o, s)) + return true; + + // package_db base + // + if (::brep::options::package_db::_parse (o, s)) + return true; + + // page base + // + if (::brep::options::page::_parse (o, s)) + return true; + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool packages:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // package_details + // + + package_details:: + package_details () + { + } + + package_details:: + package_details (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + package_details:: + package_details (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + package_details:: + package_details (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + package_details:: + package_details (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + package_details:: + package_details (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para package_details:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // package base + // + p = ::brep::options::package::print_usage (os, p); + + // search base + // + p = ::brep::options::search::print_usage (os, p); + + // package_db base + // + p = ::brep::options::package_db::print_usage (os, p); + + // page base + // + p = ::brep::options::page::print_usage (os, p); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + return p; + } + + struct _cli_package_details_desc_type: ::brep::cli::options + { + _cli_package_details_desc_type () + { + ::brep::options::package_details::fill (*this); + } + }; + + void package_details:: + fill (::brep::cli::options& os) + { + // package base + // + ::brep::options::package::fill (os); + + // search base + // + ::brep::options::search::fill (os); + + // package_db base + // + ::brep::options::package_db::fill (os); + + // page base + // + ::brep::options::page::fill (os); + + // handler base + // + ::brep::options::handler::fill (os); + } + + const ::brep::cli::options& package_details:: + description () + { + static _cli_package_details_desc_type _cli_package_details_desc_; + return _cli_package_details_desc_; + } + + typedef + std::map<std::string, void (*) (package_details&, ::brep::cli::scanner&)> + _cli_package_details_map; + + static _cli_package_details_map _cli_package_details_map_; + + struct _cli_package_details_map_init + { + _cli_package_details_map_init () + { + } + }; + + static _cli_package_details_map_init _cli_package_details_map_init_; + + bool package_details:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_package_details_map::const_iterator i (_cli_package_details_map_.find (o)); + + if (i != _cli_package_details_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // package base + // + if (::brep::options::package::_parse (o, s)) + return true; + + // search base + // + if (::brep::options::search::_parse (o, s)) + return true; + + // package_db base + // + if (::brep::options::package_db::_parse (o, s)) + return true; + + // page base + // + if (::brep::options::page::_parse (o, s)) + return true; + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool package_details:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // package_version_details + // + + package_version_details:: + package_version_details () + { + } + + package_version_details:: + package_version_details (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + package_version_details:: + package_version_details (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + package_version_details:: + package_version_details (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + package_version_details:: + package_version_details (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + package_version_details:: + package_version_details (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para package_version_details:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // package base + // + p = ::brep::options::package::print_usage (os, p); + + // package_db base + // + p = ::brep::options::package_db::print_usage (os, p); + + // build base + // + p = ::brep::options::build::print_usage (os, p); + + // build_db base + // + p = ::brep::options::build_db::print_usage (os, p); + + // page base + // + p = ::brep::options::page::print_usage (os, p); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + return p; + } + + struct _cli_package_version_details_desc_type: ::brep::cli::options + { + _cli_package_version_details_desc_type () + { + ::brep::options::package_version_details::fill (*this); + } + }; + + void package_version_details:: + fill (::brep::cli::options& os) + { + // package base + // + ::brep::options::package::fill (os); + + // package_db base + // + ::brep::options::package_db::fill (os); + + // build base + // + ::brep::options::build::fill (os); + + // build_db base + // + ::brep::options::build_db::fill (os); + + // page base + // + ::brep::options::page::fill (os); + + // handler base + // + ::brep::options::handler::fill (os); + } + + const ::brep::cli::options& package_version_details:: + description () + { + static _cli_package_version_details_desc_type _cli_package_version_details_desc_; + return _cli_package_version_details_desc_; + } + + typedef + std::map<std::string, void (*) (package_version_details&, ::brep::cli::scanner&)> + _cli_package_version_details_map; + + static _cli_package_version_details_map _cli_package_version_details_map_; + + struct _cli_package_version_details_map_init + { + _cli_package_version_details_map_init () + { + } + }; + + static _cli_package_version_details_map_init _cli_package_version_details_map_init_; + + bool package_version_details:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_package_version_details_map::const_iterator i (_cli_package_version_details_map_.find (o)); + + if (i != _cli_package_version_details_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // package base + // + if (::brep::options::package::_parse (o, s)) + return true; + + // package_db base + // + if (::brep::options::package_db::_parse (o, s)) + return true; + + // build base + // + if (::brep::options::build::_parse (o, s)) + return true; + + // build_db base + // + if (::brep::options::build_db::_parse (o, s)) + return true; + + // page base + // + if (::brep::options::page::_parse (o, s)) + return true; + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool package_version_details:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // repository_details + // + + repository_details:: + repository_details () + { + } + + repository_details:: + repository_details (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + repository_details:: + repository_details (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + repository_details:: + repository_details (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + repository_details:: + repository_details (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + repository_details:: + repository_details (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para repository_details:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // package_db base + // + p = ::brep::options::package_db::print_usage (os, p); + + // page base + // + p = ::brep::options::page::print_usage (os, p); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + return p; + } + + struct _cli_repository_details_desc_type: ::brep::cli::options + { + _cli_repository_details_desc_type () + { + ::brep::options::repository_details::fill (*this); + } + }; + + void repository_details:: + fill (::brep::cli::options& os) + { + // package_db base + // + ::brep::options::package_db::fill (os); + + // page base + // + ::brep::options::page::fill (os); + + // handler base + // + ::brep::options::handler::fill (os); + } + + const ::brep::cli::options& repository_details:: + description () + { + static _cli_repository_details_desc_type _cli_repository_details_desc_; + return _cli_repository_details_desc_; + } + + typedef + std::map<std::string, void (*) (repository_details&, ::brep::cli::scanner&)> + _cli_repository_details_map; + + static _cli_repository_details_map _cli_repository_details_map_; + + struct _cli_repository_details_map_init + { + _cli_repository_details_map_init () + { + } + }; + + static _cli_repository_details_map_init _cli_repository_details_map_init_; + + bool repository_details:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_repository_details_map::const_iterator i (_cli_repository_details_map_.find (o)); + + if (i != _cli_repository_details_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // package_db base + // + if (::brep::options::package_db::_parse (o, s)) + return true; + + // page base + // + if (::brep::options::page::_parse (o, s)) + return true; + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool repository_details:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // build_task + // + + build_task:: + build_task () + : build_task_request_max_size_ (102400), + build_task_request_max_size_specified_ (false), + build_result_timeout_ (10800), + build_result_timeout_specified_ (false), + build_interactive_login_ (), + build_interactive_login_specified_ (false) + { + } + + build_task:: + build_task (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_task_request_max_size_ (102400), + build_task_request_max_size_specified_ (false), + build_result_timeout_ (10800), + build_result_timeout_specified_ (false), + build_interactive_login_ (), + build_interactive_login_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + build_task:: + build_task (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_task_request_max_size_ (102400), + build_task_request_max_size_specified_ (false), + build_result_timeout_ (10800), + build_result_timeout_specified_ (false), + build_interactive_login_ (), + build_interactive_login_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + build_task:: + build_task (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_task_request_max_size_ (102400), + build_task_request_max_size_specified_ (false), + build_result_timeout_ (10800), + build_result_timeout_specified_ (false), + build_interactive_login_ (), + build_interactive_login_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_task:: + build_task (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_task_request_max_size_ (102400), + build_task_request_max_size_specified_ (false), + build_result_timeout_ (10800), + build_result_timeout_specified_ (false), + build_interactive_login_ (), + build_interactive_login_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_task:: + build_task (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_task_request_max_size_ (102400), + build_task_request_max_size_specified_ (false), + build_result_timeout_ (10800), + build_result_timeout_specified_ (false), + build_interactive_login_ (), + build_interactive_login_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para build_task:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // build base + // + p = ::brep::options::build::print_usage (os, p); + + // build_db base + // + p = ::brep::options::build_db::print_usage (os, p); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "build-task-request-max-size <bytes> The maximum size of the build" << ::std::endl + << " task request manifest accepted." << ::std::endl; + + os << "build-result-timeout <seconds> Time to wait before considering" << ::std::endl + << " the expected task result lost." << ::std::endl; + + os << "build-interactive-login </regex/replacement/> Regular expressions for" << ::std::endl + << " transforming the interactive" << ::std::endl + << " build login information, for" << ::std::endl + << " example, into the actual command" << ::std::endl + << " that can be used by the user." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_build_task_desc_type: ::brep::cli::options + { + _cli_build_task_desc_type () + { + ::brep::options::build_task::fill (*this); + } + }; + + void build_task:: + fill (::brep::cli::options& os) + { + // build base + // + ::brep::options::build::fill (os); + + // build_db base + // + ::brep::options::build_db::fill (os); + + // handler base + // + ::brep::options::handler::fill (os); + + // build-task-request-max-size + // + { + ::brep::cli::option_names a; + std::string dv ("102400"); + ::brep::cli::option o ("build-task-request-max-size", a, false, dv); + os.push_back (o); + } + + // build-result-timeout + // + { + ::brep::cli::option_names a; + std::string dv ("10800"); + ::brep::cli::option o ("build-result-timeout", a, false, dv); + os.push_back (o); + } + + // build-interactive-login + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-interactive-login", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& build_task:: + description () + { + static _cli_build_task_desc_type _cli_build_task_desc_; + return _cli_build_task_desc_; + } + + typedef + std::map<std::string, void (*) (build_task&, ::brep::cli::scanner&)> + _cli_build_task_map; + + static _cli_build_task_map _cli_build_task_map_; + + struct _cli_build_task_map_init + { + _cli_build_task_map_init () + { + _cli_build_task_map_["build-task-request-max-size"] = + &::brep::cli::thunk< build_task, size_t, &build_task::build_task_request_max_size_, + &build_task::build_task_request_max_size_specified_ >; + _cli_build_task_map_["build-result-timeout"] = + &::brep::cli::thunk< build_task, size_t, &build_task::build_result_timeout_, + &build_task::build_result_timeout_specified_ >; + _cli_build_task_map_["build-interactive-login"] = + &::brep::cli::thunk< build_task, vector<pair<std::regex, string>>, &build_task::build_interactive_login_, + &build_task::build_interactive_login_specified_ >; + } + }; + + static _cli_build_task_map_init _cli_build_task_map_init_; + + bool build_task:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_build_task_map::const_iterator i (_cli_build_task_map_.find (o)); + + if (i != _cli_build_task_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // build base + // + if (::brep::options::build::_parse (o, s)) + return true; + + // build_db base + // + if (::brep::options::build_db::_parse (o, s)) + return true; + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool build_task:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // build_result + // + + build_result:: + build_result () + : build_result_request_max_size_ (10240000), + build_result_request_max_size_specified_ (false), + build_toolchain_email_ (), + build_toolchain_email_specified_ (false) + { + } + + build_result:: + build_result (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_result_request_max_size_ (10240000), + build_result_request_max_size_specified_ (false), + build_toolchain_email_ (), + build_toolchain_email_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + build_result:: + build_result (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_result_request_max_size_ (10240000), + build_result_request_max_size_specified_ (false), + build_toolchain_email_ (), + build_toolchain_email_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + build_result:: + build_result (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_result_request_max_size_ (10240000), + build_result_request_max_size_specified_ (false), + build_toolchain_email_ (), + build_toolchain_email_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_result:: + build_result (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_result_request_max_size_ (10240000), + build_result_request_max_size_specified_ (false), + build_toolchain_email_ (), + build_toolchain_email_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_result:: + build_result (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_result_request_max_size_ (10240000), + build_result_request_max_size_specified_ (false), + build_toolchain_email_ (), + build_toolchain_email_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para build_result:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // build base + // + p = ::brep::options::build::print_usage (os, p); + + // package_db base + // + p = ::brep::options::package_db::print_usage (os, p); + + // build_db base + // + p = ::brep::options::build_db::print_usage (os, p); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "build-result-request-max-size <bytes> The maximum size of the build" << ::std::endl + << " result manifest accepted." << ::std::endl; + + os << "build-toolchain-email <name>=<bool> Enable or disable package build" << ::std::endl + << " notification emails." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_build_result_desc_type: ::brep::cli::options + { + _cli_build_result_desc_type () + { + ::brep::options::build_result::fill (*this); + } + }; + + void build_result:: + fill (::brep::cli::options& os) + { + // build base + // + ::brep::options::build::fill (os); + + // package_db base + // + ::brep::options::package_db::fill (os); + + // build_db base + // + ::brep::options::build_db::fill (os); + + // handler base + // + ::brep::options::handler::fill (os); + + // build-result-request-max-size + // + { + ::brep::cli::option_names a; + std::string dv ("10240000"); + ::brep::cli::option o ("build-result-request-max-size", a, false, dv); + os.push_back (o); + } + + // build-toolchain-email + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("build-toolchain-email", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& build_result:: + description () + { + static _cli_build_result_desc_type _cli_build_result_desc_; + return _cli_build_result_desc_; + } + + typedef + std::map<std::string, void (*) (build_result&, ::brep::cli::scanner&)> + _cli_build_result_map; + + static _cli_build_result_map _cli_build_result_map_; + + struct _cli_build_result_map_init + { + _cli_build_result_map_init () + { + _cli_build_result_map_["build-result-request-max-size"] = + &::brep::cli::thunk< build_result, size_t, &build_result::build_result_request_max_size_, + &build_result::build_result_request_max_size_specified_ >; + _cli_build_result_map_["build-toolchain-email"] = + &::brep::cli::thunk< build_result, std::map<string, bool>, &build_result::build_toolchain_email_, + &build_result::build_toolchain_email_specified_ >; + } + }; + + static _cli_build_result_map_init _cli_build_result_map_init_; + + bool build_result:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_build_result_map::const_iterator i (_cli_build_result_map_.find (o)); + + if (i != _cli_build_result_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // build base + // + if (::brep::options::build::_parse (o, s)) + return true; + + // package_db base + // + if (::brep::options::package_db::_parse (o, s)) + return true; + + // build_db base + // + if (::brep::options::build_db::_parse (o, s)) + return true; + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool build_result:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // build_log + // + + build_log:: + build_log () + { + } + + build_log:: + build_log (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + build_log:: + build_log (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + build_log:: + build_log (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_log:: + build_log (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_log:: + build_log (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para build_log:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // build base + // + p = ::brep::options::build::print_usage (os, p); + + // build_db base + // + p = ::brep::options::build_db::print_usage (os, p); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + return p; + } + + struct _cli_build_log_desc_type: ::brep::cli::options + { + _cli_build_log_desc_type () + { + ::brep::options::build_log::fill (*this); + } + }; + + void build_log:: + fill (::brep::cli::options& os) + { + // build base + // + ::brep::options::build::fill (os); + + // build_db base + // + ::brep::options::build_db::fill (os); + + // handler base + // + ::brep::options::handler::fill (os); + } + + const ::brep::cli::options& build_log:: + description () + { + static _cli_build_log_desc_type _cli_build_log_desc_; + return _cli_build_log_desc_; + } + + typedef + std::map<std::string, void (*) (build_log&, ::brep::cli::scanner&)> + _cli_build_log_map; + + static _cli_build_log_map _cli_build_log_map_; + + struct _cli_build_log_map_init + { + _cli_build_log_map_init () + { + } + }; + + static _cli_build_log_map_init _cli_build_log_map_init_; + + bool build_log:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_build_log_map::const_iterator i (_cli_build_log_map_.find (o)); + + if (i != _cli_build_log_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // build base + // + if (::brep::options::build::_parse (o, s)) + return true; + + // build_db base + // + if (::brep::options::build_db::_parse (o, s)) + return true; + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool build_log:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // build_force + // + + build_force:: + build_force () + { + } + + build_force:: + build_force (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + build_force:: + build_force (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + build_force:: + build_force (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_force:: + build_force (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_force:: + build_force (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para build_force:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // build base + // + p = ::brep::options::build::print_usage (os, p); + + // build_db base + // + p = ::brep::options::build_db::print_usage (os, p); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + return p; + } + + struct _cli_build_force_desc_type: ::brep::cli::options + { + _cli_build_force_desc_type () + { + ::brep::options::build_force::fill (*this); + } + }; + + void build_force:: + fill (::brep::cli::options& os) + { + // build base + // + ::brep::options::build::fill (os); + + // build_db base + // + ::brep::options::build_db::fill (os); + + // handler base + // + ::brep::options::handler::fill (os); + } + + const ::brep::cli::options& build_force:: + description () + { + static _cli_build_force_desc_type _cli_build_force_desc_; + return _cli_build_force_desc_; + } + + typedef + std::map<std::string, void (*) (build_force&, ::brep::cli::scanner&)> + _cli_build_force_map; + + static _cli_build_force_map _cli_build_force_map_; + + struct _cli_build_force_map_init + { + _cli_build_force_map_init () + { + } + }; + + static _cli_build_force_map_init _cli_build_force_map_init_; + + bool build_force:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_build_force_map::const_iterator i (_cli_build_force_map_.find (o)); + + if (i != _cli_build_force_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // build base + // + if (::brep::options::build::_parse (o, s)) + return true; + + // build_db base + // + if (::brep::options::build_db::_parse (o, s)) + return true; + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool build_force:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // builds + // + + builds:: + builds () + : build_page_entries_ (20), + build_page_entries_specified_ (false), + build_pages_ (5), + build_pages_specified_ (false) + { + } + + builds:: + builds (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_page_entries_ (20), + build_page_entries_specified_ (false), + build_pages_ (5), + build_pages_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + builds:: + builds (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_page_entries_ (20), + build_page_entries_specified_ (false), + build_pages_ (5), + build_pages_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + builds:: + builds (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_page_entries_ (20), + build_page_entries_specified_ (false), + build_pages_ (5), + build_pages_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + builds:: + builds (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_page_entries_ (20), + build_page_entries_specified_ (false), + build_pages_ (5), + build_pages_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + builds:: + builds (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_page_entries_ (20), + build_page_entries_specified_ (false), + build_pages_ (5), + build_pages_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para builds:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // build base + // + p = ::brep::options::build::print_usage (os, p); + + // build_db base + // + p = ::brep::options::build_db::print_usage (os, p); + + // page base + // + p = ::brep::options::page::print_usage (os, p); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "build-page-entries <num> Number of builds per page." << ::std::endl; + + os << "build-pages <num> Number of pages in navigation" << ::std::endl + << " (pager)." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_builds_desc_type: ::brep::cli::options + { + _cli_builds_desc_type () + { + ::brep::options::builds::fill (*this); + } + }; + + void builds:: + fill (::brep::cli::options& os) + { + // build base + // + ::brep::options::build::fill (os); + + // build_db base + // + ::brep::options::build_db::fill (os); + + // page base + // + ::brep::options::page::fill (os); + + // handler base + // + ::brep::options::handler::fill (os); + + // build-page-entries + // + { + ::brep::cli::option_names a; + std::string dv ("20"); + ::brep::cli::option o ("build-page-entries", a, false, dv); + os.push_back (o); + } + + // build-pages + // + { + ::brep::cli::option_names a; + std::string dv ("5"); + ::brep::cli::option o ("build-pages", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& builds:: + description () + { + static _cli_builds_desc_type _cli_builds_desc_; + return _cli_builds_desc_; + } + + typedef + std::map<std::string, void (*) (builds&, ::brep::cli::scanner&)> + _cli_builds_map; + + static _cli_builds_map _cli_builds_map_; + + struct _cli_builds_map_init + { + _cli_builds_map_init () + { + _cli_builds_map_["build-page-entries"] = + &::brep::cli::thunk< builds, uint16_t, &builds::build_page_entries_, + &builds::build_page_entries_specified_ >; + _cli_builds_map_["build-pages"] = + &::brep::cli::thunk< builds, uint16_t, &builds::build_pages_, + &builds::build_pages_specified_ >; + } + }; + + static _cli_builds_map_init _cli_builds_map_init_; + + bool builds:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_builds_map::const_iterator i (_cli_builds_map_.find (o)); + + if (i != _cli_builds_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // build base + // + if (::brep::options::build::_parse (o, s)) + return true; + + // build_db base + // + if (::brep::options::build_db::_parse (o, s)) + return true; + + // page base + // + if (::brep::options::page::_parse (o, s)) + return true; + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool builds:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // build_configs + // + + build_configs:: + build_configs () + : build_config_page_entries_ (20), + build_config_page_entries_specified_ (false), + build_config_pages_ (5), + build_config_pages_specified_ (false) + { + } + + build_configs:: + build_configs (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_config_page_entries_ (20), + build_config_page_entries_specified_ (false), + build_config_pages_ (5), + build_config_pages_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + build_configs:: + build_configs (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_config_page_entries_ (20), + build_config_page_entries_specified_ (false), + build_config_pages_ (5), + build_config_pages_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + build_configs:: + build_configs (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_config_page_entries_ (20), + build_config_page_entries_specified_ (false), + build_config_pages_ (5), + build_config_pages_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_configs:: + build_configs (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_config_page_entries_ (20), + build_config_page_entries_specified_ (false), + build_config_pages_ (5), + build_config_pages_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_configs:: + build_configs (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : build_config_page_entries_ (20), + build_config_page_entries_specified_ (false), + build_config_pages_ (5), + build_config_pages_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para build_configs:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // build base + // + p = ::brep::options::build::print_usage (os, p); + + // page base + // + p = ::brep::options::page::print_usage (os, p); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "build-config-page-entries <num> Number of build configurations" << ::std::endl + << " per page." << ::std::endl; + + os << "build-config-pages <num> Number of pages in navigation" << ::std::endl + << " (pager)." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_build_configs_desc_type: ::brep::cli::options + { + _cli_build_configs_desc_type () + { + ::brep::options::build_configs::fill (*this); + } + }; + + void build_configs:: + fill (::brep::cli::options& os) + { + // build base + // + ::brep::options::build::fill (os); + + // page base + // + ::brep::options::page::fill (os); + + // handler base + // + ::brep::options::handler::fill (os); + + // build-config-page-entries + // + { + ::brep::cli::option_names a; + std::string dv ("20"); + ::brep::cli::option o ("build-config-page-entries", a, false, dv); + os.push_back (o); + } + + // build-config-pages + // + { + ::brep::cli::option_names a; + std::string dv ("5"); + ::brep::cli::option o ("build-config-pages", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& build_configs:: + description () + { + static _cli_build_configs_desc_type _cli_build_configs_desc_; + return _cli_build_configs_desc_; + } + + typedef + std::map<std::string, void (*) (build_configs&, ::brep::cli::scanner&)> + _cli_build_configs_map; + + static _cli_build_configs_map _cli_build_configs_map_; + + struct _cli_build_configs_map_init + { + _cli_build_configs_map_init () + { + _cli_build_configs_map_["build-config-page-entries"] = + &::brep::cli::thunk< build_configs, uint16_t, &build_configs::build_config_page_entries_, + &build_configs::build_config_page_entries_specified_ >; + _cli_build_configs_map_["build-config-pages"] = + &::brep::cli::thunk< build_configs, uint16_t, &build_configs::build_config_pages_, + &build_configs::build_config_pages_specified_ >; + } + }; + + static _cli_build_configs_map_init _cli_build_configs_map_init_; + + bool build_configs:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_build_configs_map::const_iterator i (_cli_build_configs_map_.find (o)); + + if (i != _cli_build_configs_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // build base + // + if (::brep::options::build::_parse (o, s)) + return true; + + // page base + // + if (::brep::options::page::_parse (o, s)) + return true; + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool build_configs:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // submit + // + + submit:: + submit () + : submit_data_ (), + submit_data_specified_ (false), + submit_temp_ (), + submit_temp_specified_ (false), + submit_max_size_ (10485760), + submit_max_size_specified_ (false), + submit_form_ (), + submit_form_specified_ (false), + submit_email_ (), + submit_email_specified_ (false), + submit_handler_ (), + submit_handler_specified_ (false), + submit_handler_argument_ (), + submit_handler_argument_specified_ (false), + submit_handler_timeout_ (), + submit_handler_timeout_specified_ (false) + { + } + + submit:: + submit (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : submit_data_ (), + submit_data_specified_ (false), + submit_temp_ (), + submit_temp_specified_ (false), + submit_max_size_ (10485760), + submit_max_size_specified_ (false), + submit_form_ (), + submit_form_specified_ (false), + submit_email_ (), + submit_email_specified_ (false), + submit_handler_ (), + submit_handler_specified_ (false), + submit_handler_argument_ (), + submit_handler_argument_specified_ (false), + submit_handler_timeout_ (), + submit_handler_timeout_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + submit:: + submit (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : submit_data_ (), + submit_data_specified_ (false), + submit_temp_ (), + submit_temp_specified_ (false), + submit_max_size_ (10485760), + submit_max_size_specified_ (false), + submit_form_ (), + submit_form_specified_ (false), + submit_email_ (), + submit_email_specified_ (false), + submit_handler_ (), + submit_handler_specified_ (false), + submit_handler_argument_ (), + submit_handler_argument_specified_ (false), + submit_handler_timeout_ (), + submit_handler_timeout_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + submit:: + submit (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : submit_data_ (), + submit_data_specified_ (false), + submit_temp_ (), + submit_temp_specified_ (false), + submit_max_size_ (10485760), + submit_max_size_specified_ (false), + submit_form_ (), + submit_form_specified_ (false), + submit_email_ (), + submit_email_specified_ (false), + submit_handler_ (), + submit_handler_specified_ (false), + submit_handler_argument_ (), + submit_handler_argument_specified_ (false), + submit_handler_timeout_ (), + submit_handler_timeout_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + submit:: + submit (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : submit_data_ (), + submit_data_specified_ (false), + submit_temp_ (), + submit_temp_specified_ (false), + submit_max_size_ (10485760), + submit_max_size_specified_ (false), + submit_form_ (), + submit_form_specified_ (false), + submit_email_ (), + submit_email_specified_ (false), + submit_handler_ (), + submit_handler_specified_ (false), + submit_handler_argument_ (), + submit_handler_argument_specified_ (false), + submit_handler_timeout_ (), + submit_handler_timeout_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + submit:: + submit (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : submit_data_ (), + submit_data_specified_ (false), + submit_temp_ (), + submit_temp_specified_ (false), + submit_max_size_ (10485760), + submit_max_size_specified_ (false), + submit_form_ (), + submit_form_specified_ (false), + submit_email_ (), + submit_email_specified_ (false), + submit_handler_ (), + submit_handler_specified_ (false), + submit_handler_argument_ (), + submit_handler_argument_specified_ (false), + submit_handler_timeout_ (), + submit_handler_timeout_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para submit:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // page base + // + p = ::brep::options::page::print_usage (os, p); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "submit-data <dir> The directory to save final" << ::std::endl + << " submission data to." << ::std::endl; + + os << "submit-temp <dir> The directory to save temporary" << ::std::endl + << " submission data to." << ::std::endl; + + os << "submit-max-size <bytes> The maximum size of the" << ::std::endl + << " submission data accepted." << ::std::endl; + + os << "submit-form <file> The package submission form" << ::std::endl + << " fragment." << ::std::endl; + + os << "submit-email <email> The package submission email." << ::std::endl; + + os << "submit-handler <path> The handler program to be" << ::std::endl + << " executed on package submission." << ::std::endl; + + os << "submit-handler-argument <arg> Additional arguments to be" << ::std::endl + << " passed to the submission handler" << ::std::endl + << " program (see submit-handler for" << ::std::endl + << " details)." << ::std::endl; + + os << "submit-handler-timeout <seconds> The submission handler program" << ::std::endl + << " timeout in seconds." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_submit_desc_type: ::brep::cli::options + { + _cli_submit_desc_type () + { + ::brep::options::submit::fill (*this); + } + }; + + void submit:: + fill (::brep::cli::options& os) + { + // page base + // + ::brep::options::page::fill (os); + + // handler base + // + ::brep::options::handler::fill (os); + + // submit-data + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("submit-data", a, false, dv); + os.push_back (o); + } + + // submit-temp + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("submit-temp", a, false, dv); + os.push_back (o); + } + + // submit-max-size + // + { + ::brep::cli::option_names a; + std::string dv ("10485760"); + ::brep::cli::option o ("submit-max-size", a, false, dv); + os.push_back (o); + } + + // submit-form + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("submit-form", a, false, dv); + os.push_back (o); + } + + // submit-email + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("submit-email", a, false, dv); + os.push_back (o); + } + + // submit-handler + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("submit-handler", a, false, dv); + os.push_back (o); + } + + // submit-handler-argument + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("submit-handler-argument", a, false, dv); + os.push_back (o); + } + + // submit-handler-timeout + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("submit-handler-timeout", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& submit:: + description () + { + static _cli_submit_desc_type _cli_submit_desc_; + return _cli_submit_desc_; + } + + typedef + std::map<std::string, void (*) (submit&, ::brep::cli::scanner&)> + _cli_submit_map; + + static _cli_submit_map _cli_submit_map_; + + struct _cli_submit_map_init + { + _cli_submit_map_init () + { + _cli_submit_map_["submit-data"] = + &::brep::cli::thunk< submit, dir_path, &submit::submit_data_, + &submit::submit_data_specified_ >; + _cli_submit_map_["submit-temp"] = + &::brep::cli::thunk< submit, dir_path, &submit::submit_temp_, + &submit::submit_temp_specified_ >; + _cli_submit_map_["submit-max-size"] = + &::brep::cli::thunk< submit, size_t, &submit::submit_max_size_, + &submit::submit_max_size_specified_ >; + _cli_submit_map_["submit-form"] = + &::brep::cli::thunk< submit, path, &submit::submit_form_, + &submit::submit_form_specified_ >; + _cli_submit_map_["submit-email"] = + &::brep::cli::thunk< submit, string, &submit::submit_email_, + &submit::submit_email_specified_ >; + _cli_submit_map_["submit-handler"] = + &::brep::cli::thunk< submit, path, &submit::submit_handler_, + &submit::submit_handler_specified_ >; + _cli_submit_map_["submit-handler-argument"] = + &::brep::cli::thunk< submit, strings, &submit::submit_handler_argument_, + &submit::submit_handler_argument_specified_ >; + _cli_submit_map_["submit-handler-timeout"] = + &::brep::cli::thunk< submit, size_t, &submit::submit_handler_timeout_, + &submit::submit_handler_timeout_specified_ >; + } + }; + + static _cli_submit_map_init _cli_submit_map_init_; + + bool submit:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_submit_map::const_iterator i (_cli_submit_map_.find (o)); + + if (i != _cli_submit_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // page base + // + if (::brep::options::page::_parse (o, s)) + return true; + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool submit:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // ci + // + + ci:: + ci () + : ci_data_ (), + ci_data_specified_ (false), + ci_form_ (), + ci_form_specified_ (false), + ci_email_ (), + ci_email_specified_ (false), + ci_handler_ (), + ci_handler_specified_ (false), + ci_handler_argument_ (), + ci_handler_argument_specified_ (false), + ci_handler_timeout_ (), + ci_handler_timeout_specified_ (false) + { + } + + ci:: + ci (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : ci_data_ (), + ci_data_specified_ (false), + ci_form_ (), + ci_form_specified_ (false), + ci_email_ (), + ci_email_specified_ (false), + ci_handler_ (), + ci_handler_specified_ (false), + ci_handler_argument_ (), + ci_handler_argument_specified_ (false), + ci_handler_timeout_ (), + ci_handler_timeout_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + ci:: + ci (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : ci_data_ (), + ci_data_specified_ (false), + ci_form_ (), + ci_form_specified_ (false), + ci_email_ (), + ci_email_specified_ (false), + ci_handler_ (), + ci_handler_specified_ (false), + ci_handler_argument_ (), + ci_handler_argument_specified_ (false), + ci_handler_timeout_ (), + ci_handler_timeout_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + ci:: + ci (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : ci_data_ (), + ci_data_specified_ (false), + ci_form_ (), + ci_form_specified_ (false), + ci_email_ (), + ci_email_specified_ (false), + ci_handler_ (), + ci_handler_specified_ (false), + ci_handler_argument_ (), + ci_handler_argument_specified_ (false), + ci_handler_timeout_ (), + ci_handler_timeout_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + ci:: + ci (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : ci_data_ (), + ci_data_specified_ (false), + ci_form_ (), + ci_form_specified_ (false), + ci_email_ (), + ci_email_specified_ (false), + ci_handler_ (), + ci_handler_specified_ (false), + ci_handler_argument_ (), + ci_handler_argument_specified_ (false), + ci_handler_timeout_ (), + ci_handler_timeout_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + ci:: + ci (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : ci_data_ (), + ci_data_specified_ (false), + ci_form_ (), + ci_form_specified_ (false), + ci_email_ (), + ci_email_specified_ (false), + ci_handler_ (), + ci_handler_specified_ (false), + ci_handler_argument_ (), + ci_handler_argument_specified_ (false), + ci_handler_timeout_ (), + ci_handler_timeout_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para ci:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // page base + // + p = ::brep::options::page::print_usage (os, p); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "ci-data <dir> The directory to save CI request" << ::std::endl + << " data to." << ::std::endl; + + os << "ci-form <file> The package CI form fragment." << ::std::endl; + + os << "ci-email <email> The package CI email." << ::std::endl; + + os << "ci-handler <path> The handler program to be" << ::std::endl + << " executed on CI request." << ::std::endl; + + os << "ci-handler-argument <arg> Additional arguments to be" << ::std::endl + << " passed to the CI handler program" << ::std::endl + << " (see ci-handler for details)." << ::std::endl; + + os << "ci-handler-timeout <seconds> The CI handler program timeout" << ::std::endl + << " in seconds." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_ci_desc_type: ::brep::cli::options + { + _cli_ci_desc_type () + { + ::brep::options::ci::fill (*this); + } + }; + + void ci:: + fill (::brep::cli::options& os) + { + // page base + // + ::brep::options::page::fill (os); + + // handler base + // + ::brep::options::handler::fill (os); + + // ci-data + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("ci-data", a, false, dv); + os.push_back (o); + } + + // ci-form + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("ci-form", a, false, dv); + os.push_back (o); + } + + // ci-email + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("ci-email", a, false, dv); + os.push_back (o); + } + + // ci-handler + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("ci-handler", a, false, dv); + os.push_back (o); + } + + // ci-handler-argument + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("ci-handler-argument", a, false, dv); + os.push_back (o); + } + + // ci-handler-timeout + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("ci-handler-timeout", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& ci:: + description () + { + static _cli_ci_desc_type _cli_ci_desc_; + return _cli_ci_desc_; + } + + typedef + std::map<std::string, void (*) (ci&, ::brep::cli::scanner&)> + _cli_ci_map; + + static _cli_ci_map _cli_ci_map_; + + struct _cli_ci_map_init + { + _cli_ci_map_init () + { + _cli_ci_map_["ci-data"] = + &::brep::cli::thunk< ci, dir_path, &ci::ci_data_, + &ci::ci_data_specified_ >; + _cli_ci_map_["ci-form"] = + &::brep::cli::thunk< ci, path, &ci::ci_form_, + &ci::ci_form_specified_ >; + _cli_ci_map_["ci-email"] = + &::brep::cli::thunk< ci, string, &ci::ci_email_, + &ci::ci_email_specified_ >; + _cli_ci_map_["ci-handler"] = + &::brep::cli::thunk< ci, path, &ci::ci_handler_, + &ci::ci_handler_specified_ >; + _cli_ci_map_["ci-handler-argument"] = + &::brep::cli::thunk< ci, strings, &ci::ci_handler_argument_, + &ci::ci_handler_argument_specified_ >; + _cli_ci_map_["ci-handler-timeout"] = + &::brep::cli::thunk< ci, size_t, &ci::ci_handler_timeout_, + &ci::ci_handler_timeout_specified_ >; + } + }; + + static _cli_ci_map_init _cli_ci_map_init_; + + bool ci:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_ci_map::const_iterator i (_cli_ci_map_.find (o)); + + if (i != _cli_ci_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // page base + // + if (::brep::options::page::_parse (o, s)) + return true; + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool ci:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // repository_root + // + + repository_root:: + repository_root () + : root_global_view_ ("packages"), + root_global_view_specified_ (false), + root_tenant_view_ ("packages"), + root_tenant_view_specified_ (false) + { + } + + repository_root:: + repository_root (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : root_global_view_ ("packages"), + root_global_view_specified_ (false), + root_tenant_view_ ("packages"), + root_tenant_view_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + repository_root:: + repository_root (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : root_global_view_ ("packages"), + root_global_view_specified_ (false), + root_tenant_view_ ("packages"), + root_tenant_view_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + repository_root:: + repository_root (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : root_global_view_ ("packages"), + root_global_view_specified_ (false), + root_tenant_view_ ("packages"), + root_tenant_view_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + repository_root:: + repository_root (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : root_global_view_ ("packages"), + root_global_view_specified_ (false), + root_tenant_view_ ("packages"), + root_tenant_view_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + repository_root:: + repository_root (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : root_global_view_ ("packages"), + root_global_view_specified_ (false), + root_tenant_view_ ("packages"), + root_tenant_view_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para repository_root:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + // handler base + // + p = ::brep::options::handler::print_usage (os, p); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "root-global-view <service> The default view to display for" << ::std::endl + << " the global repository root." << ::std::endl; + + os << "root-tenant-view <service> The default view to display for" << ::std::endl + << " the tenant repository root." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_repository_root_desc_type: ::brep::cli::options + { + _cli_repository_root_desc_type () + { + ::brep::options::repository_root::fill (*this); + } + }; + + void repository_root:: + fill (::brep::cli::options& os) + { + // handler base + // + ::brep::options::handler::fill (os); + + // root-global-view + // + { + ::brep::cli::option_names a; + std::string dv ("packages"); + ::brep::cli::option o ("root-global-view", a, false, dv); + os.push_back (o); + } + + // root-tenant-view + // + { + ::brep::cli::option_names a; + std::string dv ("packages"); + ::brep::cli::option o ("root-tenant-view", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& repository_root:: + description () + { + static _cli_repository_root_desc_type _cli_repository_root_desc_; + return _cli_repository_root_desc_; + } + + typedef + std::map<std::string, void (*) (repository_root&, ::brep::cli::scanner&)> + _cli_repository_root_map; + + static _cli_repository_root_map _cli_repository_root_map_; + + struct _cli_repository_root_map_init + { + _cli_repository_root_map_init () + { + _cli_repository_root_map_["root-global-view"] = + &::brep::cli::thunk< repository_root, string, &repository_root::root_global_view_, + &repository_root::root_global_view_specified_ >; + _cli_repository_root_map_["root-tenant-view"] = + &::brep::cli::thunk< repository_root, string, &repository_root::root_tenant_view_, + &repository_root::root_tenant_view_specified_ >; + } + }; + + static _cli_repository_root_map_init _cli_repository_root_map_init_; + + bool repository_root:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_repository_root_map::const_iterator i (_cli_repository_root_map_.find (o)); + + if (i != _cli_repository_root_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // handler base + // + if (::brep::options::handler::_parse (o, s)) + return true; + + return false; + } + + bool repository_root:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + } + + namespace params + { + // packages + // + + packages:: + packages () + : page_ (), + page_specified_ (false), + q_ (), + q_specified_ (false) + { + } + + packages:: + packages (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + q_ (), + q_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + packages:: + packages (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + q_ (), + q_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + packages:: + packages (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + q_ (), + q_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + packages:: + packages (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + q_ (), + q_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + packages:: + packages (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + q_ (), + q_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para packages:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "page|p <arg>" << std::endl; + + os << "q|_ <arg>" << std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_packages_desc_type: ::brep::cli::options + { + _cli_packages_desc_type () + { + ::brep::params::packages::fill (*this); + } + }; + + void packages:: + fill (::brep::cli::options& os) + { + // page + // + { + ::brep::cli::option_names a; + a.push_back ("p"); + std::string dv; + ::brep::cli::option o ("page", a, false, dv); + os.push_back (o); + } + + // q + // + { + ::brep::cli::option_names a; + a.push_back ("_"); + std::string dv; + ::brep::cli::option o ("q", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& packages:: + description () + { + static _cli_packages_desc_type _cli_packages_desc_; + return _cli_packages_desc_; + } + + typedef + std::map<std::string, void (*) (packages&, ::brep::cli::scanner&)> + _cli_packages_map; + + static _cli_packages_map _cli_packages_map_; + + struct _cli_packages_map_init + { + _cli_packages_map_init () + { + _cli_packages_map_["page"] = + &::brep::cli::thunk< packages, uint16_t, &packages::page_, + &packages::page_specified_ >; + _cli_packages_map_["p"] = + &::brep::cli::thunk< packages, uint16_t, &packages::page_, + &packages::page_specified_ >; + _cli_packages_map_["q"] = + &::brep::cli::thunk< packages, string, &packages::q_, + &packages::q_specified_ >; + _cli_packages_map_["_"] = + &::brep::cli::thunk< packages, string, &packages::q_, + &packages::q_specified_ >; + } + }; + + static _cli_packages_map_init _cli_packages_map_init_; + + bool packages:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_packages_map::const_iterator i (_cli_packages_map_.find (o)); + + if (i != _cli_packages_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool packages:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // package_details + // + + package_details:: + package_details () + : page_ (), + page_specified_ (false), + query_ (), + query_specified_ (false), + form_ (page_form::brief), + form_specified_ (false) + { + } + + package_details:: + package_details (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + query_ (), + query_specified_ (false), + form_ (page_form::brief), + form_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + package_details:: + package_details (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + query_ (), + query_specified_ (false), + form_ (page_form::brief), + form_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + package_details:: + package_details (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + query_ (), + query_specified_ (false), + form_ (page_form::brief), + form_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + package_details:: + package_details (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + query_ (), + query_specified_ (false), + form_ (page_form::brief), + form_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + package_details:: + package_details (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + query_ (), + query_specified_ (false), + form_ (page_form::brief), + form_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para package_details:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "page|p <arg>" << std::endl; + + os << "query|q <arg>" << std::endl; + + os << "form|f <arg>" << std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_package_details_desc_type: ::brep::cli::options + { + _cli_package_details_desc_type () + { + ::brep::params::package_details::fill (*this); + } + }; + + void package_details:: + fill (::brep::cli::options& os) + { + // page + // + { + ::brep::cli::option_names a; + a.push_back ("p"); + std::string dv; + ::brep::cli::option o ("page", a, false, dv); + os.push_back (o); + } + + // query + // + { + ::brep::cli::option_names a; + a.push_back ("q"); + std::string dv; + ::brep::cli::option o ("query", a, false, dv); + os.push_back (o); + } + + // form + // + { + ::brep::cli::option_names a; + a.push_back ("f"); + std::string dv; + ::brep::cli::option o ("form", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& package_details:: + description () + { + static _cli_package_details_desc_type _cli_package_details_desc_; + return _cli_package_details_desc_; + } + + typedef + std::map<std::string, void (*) (package_details&, ::brep::cli::scanner&)> + _cli_package_details_map; + + static _cli_package_details_map _cli_package_details_map_; + + struct _cli_package_details_map_init + { + _cli_package_details_map_init () + { + _cli_package_details_map_["page"] = + &::brep::cli::thunk< package_details, uint16_t, &package_details::page_, + &package_details::page_specified_ >; + _cli_package_details_map_["p"] = + &::brep::cli::thunk< package_details, uint16_t, &package_details::page_, + &package_details::page_specified_ >; + _cli_package_details_map_["query"] = + &::brep::cli::thunk< package_details, string, &package_details::query_, + &package_details::query_specified_ >; + _cli_package_details_map_["q"] = + &::brep::cli::thunk< package_details, string, &package_details::query_, + &package_details::query_specified_ >; + _cli_package_details_map_["form"] = + &::brep::cli::thunk< package_details, page_form, &package_details::form_, + &package_details::form_specified_ >; + _cli_package_details_map_["f"] = + &::brep::cli::thunk< package_details, page_form, &package_details::form_, + &package_details::form_specified_ >; + } + }; + + static _cli_package_details_map_init _cli_package_details_map_init_; + + bool package_details:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_package_details_map::const_iterator i (_cli_package_details_map_.find (o)); + + if (i != _cli_package_details_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool package_details:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // package_version_details + // + + package_version_details:: + package_version_details () + : form_ (page_form::brief), + form_specified_ (false) + { + } + + package_version_details:: + package_version_details (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : form_ (page_form::brief), + form_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + package_version_details:: + package_version_details (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : form_ (page_form::brief), + form_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + package_version_details:: + package_version_details (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : form_ (page_form::brief), + form_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + package_version_details:: + package_version_details (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : form_ (page_form::brief), + form_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + package_version_details:: + package_version_details (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : form_ (page_form::brief), + form_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para package_version_details:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "form|f <arg>" << std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_package_version_details_desc_type: ::brep::cli::options + { + _cli_package_version_details_desc_type () + { + ::brep::params::package_version_details::fill (*this); + } + }; + + void package_version_details:: + fill (::brep::cli::options& os) + { + // form + // + { + ::brep::cli::option_names a; + a.push_back ("f"); + std::string dv; + ::brep::cli::option o ("form", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& package_version_details:: + description () + { + static _cli_package_version_details_desc_type _cli_package_version_details_desc_; + return _cli_package_version_details_desc_; + } + + typedef + std::map<std::string, void (*) (package_version_details&, ::brep::cli::scanner&)> + _cli_package_version_details_map; + + static _cli_package_version_details_map _cli_package_version_details_map_; + + struct _cli_package_version_details_map_init + { + _cli_package_version_details_map_init () + { + _cli_package_version_details_map_["form"] = + &::brep::cli::thunk< package_version_details, page_form, &package_version_details::form_, + &package_version_details::form_specified_ >; + _cli_package_version_details_map_["f"] = + &::brep::cli::thunk< package_version_details, page_form, &package_version_details::form_, + &package_version_details::form_specified_ >; + } + }; + + static _cli_package_version_details_map_init _cli_package_version_details_map_init_; + + bool package_version_details:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_package_version_details_map::const_iterator i (_cli_package_version_details_map_.find (o)); + + if (i != _cli_package_version_details_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool package_version_details:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // repository_details + // + + repository_details:: + repository_details () + { + } + + repository_details:: + repository_details (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + repository_details:: + repository_details (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + repository_details:: + repository_details (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + repository_details:: + repository_details (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + repository_details:: + repository_details (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para repository_details:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + return p; + } + + struct _cli_repository_details_desc_type: ::brep::cli::options + { + _cli_repository_details_desc_type () + { + ::brep::params::repository_details::fill (*this); + } + }; + + void repository_details:: + fill (::brep::cli::options&) + { + } + + const ::brep::cli::options& repository_details:: + description () + { + static _cli_repository_details_desc_type _cli_repository_details_desc_; + return _cli_repository_details_desc_; + } + + typedef + std::map<std::string, void (*) (repository_details&, ::brep::cli::scanner&)> + _cli_repository_details_map; + + static _cli_repository_details_map _cli_repository_details_map_; + + struct _cli_repository_details_map_init + { + _cli_repository_details_map_init () + { + } + }; + + static _cli_repository_details_map_init _cli_repository_details_map_init_; + + bool repository_details:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_repository_details_map::const_iterator i (_cli_repository_details_map_.find (o)); + + if (i != _cli_repository_details_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool repository_details:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // build_task + // + + build_task:: + build_task () + : repository_ (), + repository_specified_ (false) + { + } + + build_task:: + build_task (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : repository_ (), + repository_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + build_task:: + build_task (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : repository_ (), + repository_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + build_task:: + build_task (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : repository_ (), + repository_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_task:: + build_task (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : repository_ (), + repository_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_task:: + build_task (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : repository_ (), + repository_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para build_task:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "repository|r <arg>" << std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_build_task_desc_type: ::brep::cli::options + { + _cli_build_task_desc_type () + { + ::brep::params::build_task::fill (*this); + } + }; + + void build_task:: + fill (::brep::cli::options& os) + { + // repository + // + { + ::brep::cli::option_names a; + a.push_back ("r"); + std::string dv; + ::brep::cli::option o ("repository", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& build_task:: + description () + { + static _cli_build_task_desc_type _cli_build_task_desc_; + return _cli_build_task_desc_; + } + + typedef + std::map<std::string, void (*) (build_task&, ::brep::cli::scanner&)> + _cli_build_task_map; + + static _cli_build_task_map _cli_build_task_map_; + + struct _cli_build_task_map_init + { + _cli_build_task_map_init () + { + _cli_build_task_map_["repository"] = + &::brep::cli::thunk< build_task, vector<string>, &build_task::repository_, + &build_task::repository_specified_ >; + _cli_build_task_map_["r"] = + &::brep::cli::thunk< build_task, vector<string>, &build_task::repository_, + &build_task::repository_specified_ >; + } + }; + + static _cli_build_task_map_init _cli_build_task_map_init_; + + bool build_task:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_build_task_map::const_iterator i (_cli_build_task_map_.find (o)); + + if (i != _cli_build_task_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool build_task:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // build_result + // + + build_result:: + build_result () + { + } + + build_result:: + build_result (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + build_result:: + build_result (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + build_result:: + build_result (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_result:: + build_result (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_result:: + build_result (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para build_result:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + return p; + } + + struct _cli_build_result_desc_type: ::brep::cli::options + { + _cli_build_result_desc_type () + { + ::brep::params::build_result::fill (*this); + } + }; + + void build_result:: + fill (::brep::cli::options&) + { + } + + const ::brep::cli::options& build_result:: + description () + { + static _cli_build_result_desc_type _cli_build_result_desc_; + return _cli_build_result_desc_; + } + + typedef + std::map<std::string, void (*) (build_result&, ::brep::cli::scanner&)> + _cli_build_result_map; + + static _cli_build_result_map _cli_build_result_map_; + + struct _cli_build_result_map_init + { + _cli_build_result_map_init () + { + } + }; + + static _cli_build_result_map_init _cli_build_result_map_init_; + + bool build_result:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_build_result_map::const_iterator i (_cli_build_result_map_.find (o)); + + if (i != _cli_build_result_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool build_result:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // build_log + // + + build_log:: + build_log () + { + } + + build_log:: + build_log (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + build_log:: + build_log (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + build_log:: + build_log (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_log:: + build_log (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_log:: + build_log (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para build_log:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + return p; + } + + struct _cli_build_log_desc_type: ::brep::cli::options + { + _cli_build_log_desc_type () + { + ::brep::params::build_log::fill (*this); + } + }; + + void build_log:: + fill (::brep::cli::options&) + { + } + + const ::brep::cli::options& build_log:: + description () + { + static _cli_build_log_desc_type _cli_build_log_desc_; + return _cli_build_log_desc_; + } + + typedef + std::map<std::string, void (*) (build_log&, ::brep::cli::scanner&)> + _cli_build_log_map; + + static _cli_build_log_map _cli_build_log_map_; + + struct _cli_build_log_map_init + { + _cli_build_log_map_init () + { + } + }; + + static _cli_build_log_map_init _cli_build_log_map_init_; + + bool build_log:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_build_log_map::const_iterator i (_cli_build_log_map_.find (o)); + + if (i != _cli_build_log_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool build_log:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // build_force + // + + build_force:: + build_force () + : package_ (), + package_specified_ (false), + version_ (), + version_specified_ (false), + configuration_ (), + configuration_specified_ (false), + target_ (), + target_specified_ (false), + toolchain_name_ (), + toolchain_name_specified_ (false), + toolchain_version_ (), + toolchain_version_specified_ (false), + reason_ (), + reason_specified_ (false) + { + } + + build_force:: + build_force (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_ (), + package_specified_ (false), + version_ (), + version_specified_ (false), + configuration_ (), + configuration_specified_ (false), + target_ (), + target_specified_ (false), + toolchain_name_ (), + toolchain_name_specified_ (false), + toolchain_version_ (), + toolchain_version_specified_ (false), + reason_ (), + reason_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + build_force:: + build_force (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_ (), + package_specified_ (false), + version_ (), + version_specified_ (false), + configuration_ (), + configuration_specified_ (false), + target_ (), + target_specified_ (false), + toolchain_name_ (), + toolchain_name_specified_ (false), + toolchain_version_ (), + toolchain_version_specified_ (false), + reason_ (), + reason_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + build_force:: + build_force (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_ (), + package_specified_ (false), + version_ (), + version_specified_ (false), + configuration_ (), + configuration_specified_ (false), + target_ (), + target_specified_ (false), + toolchain_name_ (), + toolchain_name_specified_ (false), + toolchain_version_ (), + toolchain_version_specified_ (false), + reason_ (), + reason_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_force:: + build_force (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_ (), + package_specified_ (false), + version_ (), + version_specified_ (false), + configuration_ (), + configuration_specified_ (false), + target_ (), + target_specified_ (false), + toolchain_name_ (), + toolchain_name_specified_ (false), + toolchain_version_ (), + toolchain_version_specified_ (false), + reason_ (), + reason_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_force:: + build_force (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : package_ (), + package_specified_ (false), + version_ (), + version_specified_ (false), + configuration_ (), + configuration_specified_ (false), + target_ (), + target_specified_ (false), + toolchain_name_ (), + toolchain_name_specified_ (false), + toolchain_version_ (), + toolchain_version_specified_ (false), + reason_ (), + reason_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para build_force:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "package|pn <arg>" << std::endl; + + os << "version|pv <arg>" << std::endl; + + os << "configuration|cf <arg>" << std::endl; + + os << "target|tg <arg>" << std::endl; + + os << "toolchain_name|tn <arg>" << std::endl; + + os << "toolchain_version|tv <arg>" << std::endl; + + os << "reason <arg>" << std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_build_force_desc_type: ::brep::cli::options + { + _cli_build_force_desc_type () + { + ::brep::params::build_force::fill (*this); + } + }; + + void build_force:: + fill (::brep::cli::options& os) + { + // package + // + { + ::brep::cli::option_names a; + a.push_back ("pn"); + std::string dv; + ::brep::cli::option o ("package", a, false, dv); + os.push_back (o); + } + + // version + // + { + ::brep::cli::option_names a; + a.push_back ("pv"); + std::string dv; + ::brep::cli::option o ("version", a, false, dv); + os.push_back (o); + } + + // configuration + // + { + ::brep::cli::option_names a; + a.push_back ("cf"); + std::string dv; + ::brep::cli::option o ("configuration", a, false, dv); + os.push_back (o); + } + + // target + // + { + ::brep::cli::option_names a; + a.push_back ("tg"); + std::string dv; + ::brep::cli::option o ("target", a, false, dv); + os.push_back (o); + } + + // toolchain_name + // + { + ::brep::cli::option_names a; + a.push_back ("tn"); + std::string dv; + ::brep::cli::option o ("toolchain_name", a, false, dv); + os.push_back (o); + } + + // toolchain_version + // + { + ::brep::cli::option_names a; + a.push_back ("tv"); + std::string dv; + ::brep::cli::option o ("toolchain_version", a, false, dv); + os.push_back (o); + } + + // reason + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("reason", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& build_force:: + description () + { + static _cli_build_force_desc_type _cli_build_force_desc_; + return _cli_build_force_desc_; + } + + typedef + std::map<std::string, void (*) (build_force&, ::brep::cli::scanner&)> + _cli_build_force_map; + + static _cli_build_force_map _cli_build_force_map_; + + struct _cli_build_force_map_init + { + _cli_build_force_map_init () + { + _cli_build_force_map_["package"] = + &::brep::cli::thunk< build_force, string, &build_force::package_, + &build_force::package_specified_ >; + _cli_build_force_map_["pn"] = + &::brep::cli::thunk< build_force, string, &build_force::package_, + &build_force::package_specified_ >; + _cli_build_force_map_["version"] = + &::brep::cli::thunk< build_force, string, &build_force::version_, + &build_force::version_specified_ >; + _cli_build_force_map_["pv"] = + &::brep::cli::thunk< build_force, string, &build_force::version_, + &build_force::version_specified_ >; + _cli_build_force_map_["configuration"] = + &::brep::cli::thunk< build_force, string, &build_force::configuration_, + &build_force::configuration_specified_ >; + _cli_build_force_map_["cf"] = + &::brep::cli::thunk< build_force, string, &build_force::configuration_, + &build_force::configuration_specified_ >; + _cli_build_force_map_["target"] = + &::brep::cli::thunk< build_force, string, &build_force::target_, + &build_force::target_specified_ >; + _cli_build_force_map_["tg"] = + &::brep::cli::thunk< build_force, string, &build_force::target_, + &build_force::target_specified_ >; + _cli_build_force_map_["toolchain_name"] = + &::brep::cli::thunk< build_force, string, &build_force::toolchain_name_, + &build_force::toolchain_name_specified_ >; + _cli_build_force_map_["tn"] = + &::brep::cli::thunk< build_force, string, &build_force::toolchain_name_, + &build_force::toolchain_name_specified_ >; + _cli_build_force_map_["toolchain_version"] = + &::brep::cli::thunk< build_force, string, &build_force::toolchain_version_, + &build_force::toolchain_version_specified_ >; + _cli_build_force_map_["tv"] = + &::brep::cli::thunk< build_force, string, &build_force::toolchain_version_, + &build_force::toolchain_version_specified_ >; + _cli_build_force_map_["reason"] = + &::brep::cli::thunk< build_force, string, &build_force::reason_, + &build_force::reason_specified_ >; + } + }; + + static _cli_build_force_map_init _cli_build_force_map_init_; + + bool build_force:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_build_force_map::const_iterator i (_cli_build_force_map_.find (o)); + + if (i != _cli_build_force_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool build_force:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // builds + // + + builds:: + builds () + : page_ (), + page_specified_ (false), + name_ (), + name_specified_ (false), + name_legacy_ (), + name_legacy_specified_ (false), + version_ (), + version_specified_ (false), + toolchain_ ("*"), + toolchain_specified_ (false), + configuration_ (), + configuration_specified_ (false), + machine_ (), + machine_specified_ (false), + target_ (), + target_specified_ (false), + result_ ("*"), + result_specified_ (false) + { + } + + builds:: + builds (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + name_ (), + name_specified_ (false), + name_legacy_ (), + name_legacy_specified_ (false), + version_ (), + version_specified_ (false), + toolchain_ ("*"), + toolchain_specified_ (false), + configuration_ (), + configuration_specified_ (false), + machine_ (), + machine_specified_ (false), + target_ (), + target_specified_ (false), + result_ ("*"), + result_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + builds:: + builds (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + name_ (), + name_specified_ (false), + name_legacy_ (), + name_legacy_specified_ (false), + version_ (), + version_specified_ (false), + toolchain_ ("*"), + toolchain_specified_ (false), + configuration_ (), + configuration_specified_ (false), + machine_ (), + machine_specified_ (false), + target_ (), + target_specified_ (false), + result_ ("*"), + result_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + builds:: + builds (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + name_ (), + name_specified_ (false), + name_legacy_ (), + name_legacy_specified_ (false), + version_ (), + version_specified_ (false), + toolchain_ ("*"), + toolchain_specified_ (false), + configuration_ (), + configuration_specified_ (false), + machine_ (), + machine_specified_ (false), + target_ (), + target_specified_ (false), + result_ ("*"), + result_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + builds:: + builds (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + name_ (), + name_specified_ (false), + name_legacy_ (), + name_legacy_specified_ (false), + version_ (), + version_specified_ (false), + toolchain_ ("*"), + toolchain_specified_ (false), + configuration_ (), + configuration_specified_ (false), + machine_ (), + machine_specified_ (false), + target_ (), + target_specified_ (false), + result_ ("*"), + result_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + builds:: + builds (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : page_ (), + page_specified_ (false), + name_ (), + name_specified_ (false), + name_legacy_ (), + name_legacy_specified_ (false), + version_ (), + version_specified_ (false), + toolchain_ ("*"), + toolchain_specified_ (false), + configuration_ (), + configuration_specified_ (false), + machine_ (), + machine_specified_ (false), + target_ (), + target_specified_ (false), + result_ ("*"), + result_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para builds:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "page|p <arg>" << std::endl; + + os << "name|_ <arg>" << std::endl; + + os << "name_legacy|pn <arg>" << std::endl; + + os << "version|pv <arg>" << std::endl; + + os << "toolchain|tc <arg>" << std::endl; + + os << "configuration|cf <arg>" << std::endl; + + os << "machine|mn <arg>" << std::endl; + + os << "target|tg <arg>" << std::endl; + + os << "result|rs <arg>" << std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_builds_desc_type: ::brep::cli::options + { + _cli_builds_desc_type () + { + ::brep::params::builds::fill (*this); + } + }; + + void builds:: + fill (::brep::cli::options& os) + { + // page + // + { + ::brep::cli::option_names a; + a.push_back ("p"); + std::string dv; + ::brep::cli::option o ("page", a, false, dv); + os.push_back (o); + } + + // name + // + { + ::brep::cli::option_names a; + a.push_back ("_"); + std::string dv; + ::brep::cli::option o ("name", a, false, dv); + os.push_back (o); + } + + // name_legacy + // + { + ::brep::cli::option_names a; + a.push_back ("pn"); + std::string dv; + ::brep::cli::option o ("name_legacy", a, false, dv); + os.push_back (o); + } + + // version + // + { + ::brep::cli::option_names a; + a.push_back ("pv"); + std::string dv; + ::brep::cli::option o ("version", a, false, dv); + os.push_back (o); + } + + // toolchain + // + { + ::brep::cli::option_names a; + a.push_back ("tc"); + std::string dv ("*"); + ::brep::cli::option o ("toolchain", a, false, dv); + os.push_back (o); + } + + // configuration + // + { + ::brep::cli::option_names a; + a.push_back ("cf"); + std::string dv; + ::brep::cli::option o ("configuration", a, false, dv); + os.push_back (o); + } + + // machine + // + { + ::brep::cli::option_names a; + a.push_back ("mn"); + std::string dv; + ::brep::cli::option o ("machine", a, false, dv); + os.push_back (o); + } + + // target + // + { + ::brep::cli::option_names a; + a.push_back ("tg"); + std::string dv; + ::brep::cli::option o ("target", a, false, dv); + os.push_back (o); + } + + // result + // + { + ::brep::cli::option_names a; + a.push_back ("rs"); + std::string dv ("*"); + ::brep::cli::option o ("result", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& builds:: + description () + { + static _cli_builds_desc_type _cli_builds_desc_; + return _cli_builds_desc_; + } + + typedef + std::map<std::string, void (*) (builds&, ::brep::cli::scanner&)> + _cli_builds_map; + + static _cli_builds_map _cli_builds_map_; + + struct _cli_builds_map_init + { + _cli_builds_map_init () + { + _cli_builds_map_["page"] = + &::brep::cli::thunk< builds, uint16_t, &builds::page_, + &builds::page_specified_ >; + _cli_builds_map_["p"] = + &::brep::cli::thunk< builds, uint16_t, &builds::page_, + &builds::page_specified_ >; + _cli_builds_map_["name"] = + &::brep::cli::thunk< builds, string, &builds::name_, + &builds::name_specified_ >; + _cli_builds_map_["_"] = + &::brep::cli::thunk< builds, string, &builds::name_, + &builds::name_specified_ >; + _cli_builds_map_["name_legacy"] = + &::brep::cli::thunk< builds, string, &builds::name_legacy_, + &builds::name_legacy_specified_ >; + _cli_builds_map_["pn"] = + &::brep::cli::thunk< builds, string, &builds::name_legacy_, + &builds::name_legacy_specified_ >; + _cli_builds_map_["version"] = + &::brep::cli::thunk< builds, string, &builds::version_, + &builds::version_specified_ >; + _cli_builds_map_["pv"] = + &::brep::cli::thunk< builds, string, &builds::version_, + &builds::version_specified_ >; + _cli_builds_map_["toolchain"] = + &::brep::cli::thunk< builds, string, &builds::toolchain_, + &builds::toolchain_specified_ >; + _cli_builds_map_["tc"] = + &::brep::cli::thunk< builds, string, &builds::toolchain_, + &builds::toolchain_specified_ >; + _cli_builds_map_["configuration"] = + &::brep::cli::thunk< builds, string, &builds::configuration_, + &builds::configuration_specified_ >; + _cli_builds_map_["cf"] = + &::brep::cli::thunk< builds, string, &builds::configuration_, + &builds::configuration_specified_ >; + _cli_builds_map_["machine"] = + &::brep::cli::thunk< builds, string, &builds::machine_, + &builds::machine_specified_ >; + _cli_builds_map_["mn"] = + &::brep::cli::thunk< builds, string, &builds::machine_, + &builds::machine_specified_ >; + _cli_builds_map_["target"] = + &::brep::cli::thunk< builds, string, &builds::target_, + &builds::target_specified_ >; + _cli_builds_map_["tg"] = + &::brep::cli::thunk< builds, string, &builds::target_, + &builds::target_specified_ >; + _cli_builds_map_["result"] = + &::brep::cli::thunk< builds, string, &builds::result_, + &builds::result_specified_ >; + _cli_builds_map_["rs"] = + &::brep::cli::thunk< builds, string, &builds::result_, + &builds::result_specified_ >; + } + }; + + static _cli_builds_map_init _cli_builds_map_init_; + + bool builds:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_builds_map::const_iterator i (_cli_builds_map_.find (o)); + + if (i != _cli_builds_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool builds:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // build_configs + // + + build_configs:: + build_configs () + : class_name_ ("all"), + class_name_specified_ (false), + page_ (), + page_specified_ (false) + { + } + + build_configs:: + build_configs (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : class_name_ ("all"), + class_name_specified_ (false), + page_ (), + page_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + build_configs:: + build_configs (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : class_name_ ("all"), + class_name_specified_ (false), + page_ (), + page_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + build_configs:: + build_configs (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : class_name_ ("all"), + class_name_specified_ (false), + page_ (), + page_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_configs:: + build_configs (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : class_name_ ("all"), + class_name_specified_ (false), + page_ (), + page_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + build_configs:: + build_configs (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : class_name_ ("all"), + class_name_specified_ (false), + page_ (), + page_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para build_configs:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "class_name|_ <arg>" << std::endl; + + os << "page|p <arg>" << std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_build_configs_desc_type: ::brep::cli::options + { + _cli_build_configs_desc_type () + { + ::brep::params::build_configs::fill (*this); + } + }; + + void build_configs:: + fill (::brep::cli::options& os) + { + // class_name + // + { + ::brep::cli::option_names a; + a.push_back ("_"); + std::string dv ("all"); + ::brep::cli::option o ("class_name", a, false, dv); + os.push_back (o); + } + + // page + // + { + ::brep::cli::option_names a; + a.push_back ("p"); + std::string dv; + ::brep::cli::option o ("page", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& build_configs:: + description () + { + static _cli_build_configs_desc_type _cli_build_configs_desc_; + return _cli_build_configs_desc_; + } + + typedef + std::map<std::string, void (*) (build_configs&, ::brep::cli::scanner&)> + _cli_build_configs_map; + + static _cli_build_configs_map _cli_build_configs_map_; + + struct _cli_build_configs_map_init + { + _cli_build_configs_map_init () + { + _cli_build_configs_map_["class_name"] = + &::brep::cli::thunk< build_configs, string, &build_configs::class_name_, + &build_configs::class_name_specified_ >; + _cli_build_configs_map_["_"] = + &::brep::cli::thunk< build_configs, string, &build_configs::class_name_, + &build_configs::class_name_specified_ >; + _cli_build_configs_map_["page"] = + &::brep::cli::thunk< build_configs, uint16_t, &build_configs::page_, + &build_configs::page_specified_ >; + _cli_build_configs_map_["p"] = + &::brep::cli::thunk< build_configs, uint16_t, &build_configs::page_, + &build_configs::page_specified_ >; + } + }; + + static _cli_build_configs_map_init _cli_build_configs_map_init_; + + bool build_configs:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_build_configs_map::const_iterator i (_cli_build_configs_map_.find (o)); + + if (i != _cli_build_configs_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool build_configs:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // submit + // + + submit:: + submit () + : archive_ (), + archive_specified_ (false), + sha256sum_ (), + sha256sum_specified_ (false), + simulate_ (), + simulate_specified_ (false) + { + } + + submit:: + submit (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : archive_ (), + archive_specified_ (false), + sha256sum_ (), + sha256sum_specified_ (false), + simulate_ (), + simulate_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + submit:: + submit (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : archive_ (), + archive_specified_ (false), + sha256sum_ (), + sha256sum_specified_ (false), + simulate_ (), + simulate_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + submit:: + submit (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : archive_ (), + archive_specified_ (false), + sha256sum_ (), + sha256sum_specified_ (false), + simulate_ (), + simulate_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + submit:: + submit (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : archive_ (), + archive_specified_ (false), + sha256sum_ (), + sha256sum_specified_ (false), + simulate_ (), + simulate_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + submit:: + submit (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : archive_ (), + archive_specified_ (false), + sha256sum_ (), + sha256sum_specified_ (false), + simulate_ (), + simulate_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para submit:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "archive <arg>" << std::endl; + + os << "sha256sum <arg>" << std::endl; + + os << "simulate <arg>" << std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_submit_desc_type: ::brep::cli::options + { + _cli_submit_desc_type () + { + ::brep::params::submit::fill (*this); + } + }; + + void submit:: + fill (::brep::cli::options& os) + { + // archive + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("archive", a, false, dv); + os.push_back (o); + } + + // sha256sum + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("sha256sum", a, false, dv); + os.push_back (o); + } + + // simulate + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("simulate", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& submit:: + description () + { + static _cli_submit_desc_type _cli_submit_desc_; + return _cli_submit_desc_; + } + + typedef + std::map<std::string, void (*) (submit&, ::brep::cli::scanner&)> + _cli_submit_map; + + static _cli_submit_map _cli_submit_map_; + + struct _cli_submit_map_init + { + _cli_submit_map_init () + { + _cli_submit_map_["archive"] = + &::brep::cli::thunk< submit, string, &submit::archive_, + &submit::archive_specified_ >; + _cli_submit_map_["sha256sum"] = + &::brep::cli::thunk< submit, string, &submit::sha256sum_, + &submit::sha256sum_specified_ >; + _cli_submit_map_["simulate"] = + &::brep::cli::thunk< submit, string, &submit::simulate_, + &submit::simulate_specified_ >; + } + }; + + static _cli_submit_map_init _cli_submit_map_init_; + + bool submit:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_submit_map::const_iterator i (_cli_submit_map_.find (o)); + + if (i != _cli_submit_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool submit:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + + // ci + // + + ci:: + ci () + : repository_ (), + repository_specified_ (false), + package_ (), + package_specified_ (false), + overrides_ (), + overrides_specified_ (false), + interactive_ (), + interactive_specified_ (false), + simulate_ (), + simulate_specified_ (false) + { + } + + ci:: + ci (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : repository_ (), + repository_specified_ (false), + package_ (), + package_specified_ (false), + overrides_ (), + overrides_specified_ (false), + interactive_ (), + interactive_specified_ (false), + simulate_ (), + simulate_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + ci:: + ci (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : repository_ (), + repository_specified_ (false), + package_ (), + package_specified_ (false), + overrides_ (), + overrides_specified_ (false), + interactive_ (), + interactive_specified_ (false), + simulate_ (), + simulate_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + ci:: + ci (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : repository_ (), + repository_specified_ (false), + package_ (), + package_specified_ (false), + overrides_ (), + overrides_specified_ (false), + interactive_ (), + interactive_specified_ (false), + simulate_ (), + simulate_specified_ (false) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + ci:: + ci (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : repository_ (), + repository_specified_ (false), + package_ (), + package_specified_ (false), + overrides_ (), + overrides_specified_ (false), + interactive_ (), + interactive_specified_ (false), + simulate_ (), + simulate_specified_ (false) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + ci:: + ci (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : repository_ (), + repository_specified_ (false), + package_ (), + package_specified_ (false), + overrides_ (), + overrides_specified_ (false), + interactive_ (), + interactive_specified_ (false), + simulate_ (), + simulate_specified_ (false) + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para ci:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p == ::brep::cli::usage_para::text) + os << ::std::endl; + + os << "repository|_ <arg>" << std::endl; + + os << "package <arg>" << std::endl; + + os << "overrides <arg>" << std::endl; + + os << "interactive <arg>" << std::endl; + + os << "simulate <arg>" << std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + struct _cli_ci_desc_type: ::brep::cli::options + { + _cli_ci_desc_type () + { + ::brep::params::ci::fill (*this); + } + }; + + void ci:: + fill (::brep::cli::options& os) + { + // repository + // + { + ::brep::cli::option_names a; + a.push_back ("_"); + std::string dv; + ::brep::cli::option o ("repository", a, false, dv); + os.push_back (o); + } + + // package + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("package", a, false, dv); + os.push_back (o); + } + + // overrides + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("overrides", a, false, dv); + os.push_back (o); + } + + // interactive + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("interactive", a, false, dv); + os.push_back (o); + } + + // simulate + // + { + ::brep::cli::option_names a; + std::string dv; + ::brep::cli::option o ("simulate", a, false, dv); + os.push_back (o); + } + } + + const ::brep::cli::options& ci:: + description () + { + static _cli_ci_desc_type _cli_ci_desc_; + return _cli_ci_desc_; + } + + typedef + std::map<std::string, void (*) (ci&, ::brep::cli::scanner&)> + _cli_ci_map; + + static _cli_ci_map _cli_ci_map_; + + struct _cli_ci_map_init + { + _cli_ci_map_init () + { + _cli_ci_map_["repository"] = + &::brep::cli::thunk< ci, bpkg::repository_location, &ci::repository_, + &ci::repository_specified_ >; + _cli_ci_map_["_"] = + &::brep::cli::thunk< ci, bpkg::repository_location, &ci::repository_, + &ci::repository_specified_ >; + _cli_ci_map_["package"] = + &::brep::cli::thunk< ci, strings, &ci::package_, + &ci::package_specified_ >; + _cli_ci_map_["overrides"] = + &::brep::cli::thunk< ci, string, &ci::overrides_, + &ci::overrides_specified_ >; + _cli_ci_map_["interactive"] = + &::brep::cli::thunk< ci, string, &ci::interactive_, + &ci::interactive_specified_ >; + _cli_ci_map_["simulate"] = + &::brep::cli::thunk< ci, string, &ci::simulate_, + &ci::simulate_specified_ >; + } + }; + + static _cli_ci_map_init _cli_ci_map_init_; + + bool ci:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_ci_map::const_iterator i (_cli_ci_map_.find (o)); + + if (i != _cli_ci_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool ci:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode, + ::brep::cli::unknown_mode arg_mode) + { + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + } +} + +// Begin epilogue. +// +// +// End epilogue. + diff --git a/mod/pregenerated/mod/module-options.hxx b/mod/pregenerated/mod/module-options.hxx new file mode 100644 index 0000000..c206d8b --- /dev/null +++ b/mod/pregenerated/mod/module-options.hxx @@ -0,0 +1,4546 @@ +// -*- C++ -*- +// +// This file was generated by CLI, a command line interface +// compiler for C++. +// + +#ifndef MOD_MODULE_OPTIONS_HXX +#define MOD_MODULE_OPTIONS_HXX + +// Begin prologue. +// +// +// End prologue. + +#include <list> +#include <deque> +#include <map> +#include <vector> +#include <iosfwd> +#include <string> +#include <cstddef> +#include <exception> + +#ifndef CLI_POTENTIALLY_UNUSED +# if defined(_MSC_VER) || defined(__xlC__) +# define CLI_POTENTIALLY_UNUSED(x) (void*)&x +# else +# define CLI_POTENTIALLY_UNUSED(x) (void)x +# endif +#endif + +namespace brep +{ + namespace cli + { + class usage_para + { + public: + enum value + { + none, + text, + option + }; + + usage_para (value); + + operator value () const + { + return v_; + } + + private: + value v_; + }; + + class unknown_mode + { + public: + enum value + { + skip, + stop, + fail + }; + + unknown_mode (value); + + operator value () const + { + return v_; + } + + private: + value v_; + }; + + // Exceptions. + // + + class exception: public std::exception + { + public: + virtual void + print (::std::ostream&) const = 0; + }; + + ::std::ostream& + operator<< (::std::ostream&, const exception&); + + class unknown_option: public exception + { + public: + virtual + ~unknown_option () throw (); + + unknown_option (const std::string& option); + + const std::string& + option () const; + + virtual void + print (::std::ostream&) const; + + virtual const char* + what () const throw (); + + private: + std::string option_; + }; + + class unknown_argument: public exception + { + public: + virtual + ~unknown_argument () throw (); + + unknown_argument (const std::string& argument); + + const std::string& + argument () const; + + virtual void + print (::std::ostream&) const; + + virtual const char* + what () const throw (); + + private: + std::string argument_; + }; + + class missing_value: public exception + { + public: + virtual + ~missing_value () throw (); + + missing_value (const std::string& option); + + const std::string& + option () const; + + virtual void + print (::std::ostream&) const; + + virtual const char* + what () const throw (); + + private: + std::string option_; + }; + + class invalid_value: public exception + { + public: + virtual + ~invalid_value () throw (); + + invalid_value (const std::string& option, + const std::string& value, + const std::string& message = std::string ()); + + const std::string& + option () const; + + const std::string& + value () const; + + const std::string& + message () const; + + virtual void + print (::std::ostream&) const; + + virtual const char* + what () const throw (); + + private: + std::string option_; + std::string value_; + std::string message_; + }; + + class eos_reached: public exception + { + public: + virtual void + print (::std::ostream&) const; + + virtual const char* + what () const throw (); + }; + + class file_io_failure: public exception + { + public: + virtual + ~file_io_failure () throw (); + + file_io_failure (const std::string& file); + + const std::string& + file () const; + + virtual void + print (::std::ostream&) const; + + virtual const char* + what () const throw (); + + private: + std::string file_; + }; + + class unmatched_quote: public exception + { + public: + virtual + ~unmatched_quote () throw (); + + unmatched_quote (const std::string& argument); + + const std::string& + argument () const; + + virtual void + print (::std::ostream&) const; + + virtual const char* + what () const throw (); + + private: + std::string argument_; + }; + + // Command line argument scanner interface. + // + // The values returned by next() are guaranteed to be valid + // for the two previous arguments up until a call to a third + // peek() or next(). + // + // The position() function returns a monotonically-increasing + // number which, if stored, can later be used to determine the + // relative position of the argument returned by the following + // call to next(). Note that if multiple scanners are used to + // extract arguments from multiple sources, then the end + // position of the previous scanner should be used as the + // start position of the next. + // + class scanner + { + public: + virtual + ~scanner (); + + virtual bool + more () = 0; + + virtual const char* + peek () = 0; + + virtual const char* + next () = 0; + + virtual void + skip () = 0; + + virtual std::size_t + position () = 0; + }; + + class argv_scanner: public scanner + { + public: + argv_scanner (int& argc, + char** argv, + bool erase = false, + std::size_t start_position = 0); + + argv_scanner (int start, + int& argc, + char** argv, + bool erase = false, + std::size_t start_position = 0); + + int + end () const; + + virtual bool + more (); + + virtual const char* + peek (); + + virtual const char* + next (); + + virtual void + skip (); + + virtual std::size_t + position (); + + protected: + std::size_t start_position_; + int i_; + int& argc_; + char** argv_; + bool erase_; + }; + + class argv_file_scanner: public argv_scanner + { + public: + argv_file_scanner (int& argc, + char** argv, + const std::string& option, + bool erase = false, + std::size_t start_position = 0); + + argv_file_scanner (int start, + int& argc, + char** argv, + const std::string& option, + bool erase = false, + std::size_t start_position = 0); + + argv_file_scanner (const std::string& file, + const std::string& option, + std::size_t start_position = 0); + + struct option_info + { + // If search_func is not NULL, it is called, with the arg + // value as the second argument, to locate the options file. + // If it returns an empty string, then the file is ignored. + // + const char* option; + std::string (*search_func) (const char*, void* arg); + void* arg; + }; + + argv_file_scanner (int& argc, + char** argv, + const option_info* options, + std::size_t options_count, + bool erase = false, + std::size_t start_position = 0); + + argv_file_scanner (int start, + int& argc, + char** argv, + const option_info* options, + std::size_t options_count, + bool erase = false, + std::size_t start_position = 0); + + argv_file_scanner (const std::string& file, + const option_info* options = 0, + std::size_t options_count = 0, + std::size_t start_position = 0); + + virtual bool + more (); + + virtual const char* + peek (); + + virtual const char* + next (); + + virtual void + skip (); + + virtual std::size_t + position (); + + // Return the file path if the peeked at argument came from a file and + // the empty string otherwise. The reference is guaranteed to be valid + // till the end of the scanner lifetime. + // + const std::string& + peek_file (); + + // Return the 1-based line number if the peeked at argument came from + // a file and zero otherwise. + // + std::size_t + peek_line (); + + private: + const option_info* + find (const char*) const; + + void + load (const std::string& file); + + typedef argv_scanner base; + + const std::string option_; + option_info option_info_; + const option_info* options_; + std::size_t options_count_; + + struct arg + { + std::string value; + const std::string* file; + std::size_t line; + }; + + std::deque<arg> args_; + std::list<std::string> files_; + + // Circular buffer of two arguments. + // + std::string hold_[2]; + std::size_t i_; + + bool skip_; + + static int zero_argc_; + static std::string empty_string_; + }; + + typedef std::vector<std::string> option_names; + + class option + { + public: + + const std::string& + name () const; + + const option_names& + aliases () const; + + bool + flag () const; + + const std::string& + default_value () const; + + public:option (); + option (const std::string& name, + const option_names& aliases, + bool flag, + const std::string& default_value); + + private: + std::string name_; + option_names aliases_; + bool flag_; + std::string default_value_; + }; + + class options: public std::vector<option> + { + public: + typedef std::vector<option> container_type; + + container_type::const_iterator + find (const std::string& name) const; + + void + push_back (const option&); + private: + typedef std::map<std::string, container_type::size_type> map_type; + map_type map_; + }; + + template <typename X> + struct parser; + } +} + +#include <map> + +#include <regex> + +#include <libbpkg/manifest.hxx> + +#include <web/xhtml/fragment.hxx> + +#include <libbrep/types.hxx> + +#include <mod/options-types.hxx> + +namespace brep +{ + namespace options + { + class handler + { + public: + handler (); + + handler (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + handler (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + handler (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + handler (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + handler (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const string& + email () const; + + string& + email (); + + void + email (const string&); + + bool + email_specified () const; + + void + email_specified (bool); + + const string& + host () const; + + string& + host (); + + void + host (const string&); + + bool + host_specified () const; + + void + host_specified (bool); + + const dir_path& + root () const; + + dir_path& + root (); + + void + root (const dir_path&); + + bool + root_specified () const; + + void + root_specified (bool); + + const string& + tenant_name () const; + + string& + tenant_name (); + + void + tenant_name (const string&); + + bool + tenant_name_specified () const; + + void + tenant_name_specified (bool); + + const uint16_t& + verbosity () const; + + uint16_t& + verbosity (); + + void + verbosity (const uint16_t&); + + bool + verbosity_specified () const; + + void + verbosity_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_handler_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + string email_; + bool email_specified_; + string host_; + bool host_specified_; + dir_path root_; + bool root_specified_; + string tenant_name_; + bool tenant_name_specified_; + uint16_t verbosity_; + bool verbosity_specified_; + }; + + class openssl_options + { + public: + openssl_options (); + + openssl_options (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + openssl_options (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + openssl_options (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + openssl_options (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + openssl_options (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const path& + openssl () const; + + path& + openssl (); + + void + openssl (const path&); + + bool + openssl_specified () const; + + void + openssl_specified (bool); + + const strings& + openssl_option () const; + + strings& + openssl_option (); + + void + openssl_option (const strings&); + + bool + openssl_option_specified () const; + + void + openssl_option_specified (bool); + + const strings& + openssl_envvar () const; + + strings& + openssl_envvar (); + + void + openssl_envvar (const strings&); + + bool + openssl_envvar_specified () const; + + void + openssl_envvar_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_openssl_options_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + path openssl_; + bool openssl_specified_; + strings openssl_option_; + bool openssl_option_specified_; + strings openssl_envvar_; + bool openssl_envvar_specified_; + }; + + class package_db + { + public: + package_db (); + + package_db (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_db (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_db (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_db (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_db (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const string& + package_db_user () const; + + string& + package_db_user (); + + void + package_db_user (const string&); + + bool + package_db_user_specified () const; + + void + package_db_user_specified (bool); + + const string& + package_db_role () const; + + string& + package_db_role (); + + void + package_db_role (const string&); + + bool + package_db_role_specified () const; + + void + package_db_role_specified (bool); + + const string& + package_db_password () const; + + string& + package_db_password (); + + void + package_db_password (const string&); + + bool + package_db_password_specified () const; + + void + package_db_password_specified (bool); + + const string& + package_db_name () const; + + string& + package_db_name (); + + void + package_db_name (const string&); + + bool + package_db_name_specified () const; + + void + package_db_name_specified (bool); + + const string& + package_db_host () const; + + string& + package_db_host (); + + void + package_db_host (const string&); + + bool + package_db_host_specified () const; + + void + package_db_host_specified (bool); + + const uint16_t& + package_db_port () const; + + uint16_t& + package_db_port (); + + void + package_db_port (const uint16_t&); + + bool + package_db_port_specified () const; + + void + package_db_port_specified (bool); + + const size_t& + package_db_max_connections () const; + + size_t& + package_db_max_connections (); + + void + package_db_max_connections (const size_t&); + + bool + package_db_max_connections_specified () const; + + void + package_db_max_connections_specified (bool); + + const size_t& + package_db_retry () const; + + size_t& + package_db_retry (); + + void + package_db_retry (const size_t&); + + bool + package_db_retry_specified () const; + + void + package_db_retry_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_package_db_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + string package_db_user_; + bool package_db_user_specified_; + string package_db_role_; + bool package_db_role_specified_; + string package_db_password_; + bool package_db_password_specified_; + string package_db_name_; + bool package_db_name_specified_; + string package_db_host_; + bool package_db_host_specified_; + uint16_t package_db_port_; + bool package_db_port_specified_; + size_t package_db_max_connections_; + bool package_db_max_connections_specified_; + size_t package_db_retry_; + bool package_db_retry_specified_; + }; + + class build: public ::brep::options::openssl_options + { + public: + build (); + + build (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const path& + build_config () const; + + path& + build_config (); + + void + build_config (const path&); + + bool + build_config_specified () const; + + void + build_config_specified (bool); + + const dir_path& + build_bot_agent_keys () const; + + dir_path& + build_bot_agent_keys (); + + void + build_bot_agent_keys (const dir_path&); + + bool + build_bot_agent_keys_specified () const; + + void + build_bot_agent_keys_specified (bool); + + const size_t& + build_forced_rebuild_timeout () const; + + size_t& + build_forced_rebuild_timeout (); + + void + build_forced_rebuild_timeout (const size_t&); + + bool + build_forced_rebuild_timeout_specified () const; + + void + build_forced_rebuild_timeout_specified (bool); + + const size_t& + build_soft_rebuild_timeout () const; + + size_t& + build_soft_rebuild_timeout (); + + void + build_soft_rebuild_timeout (const size_t&); + + bool + build_soft_rebuild_timeout_specified () const; + + void + build_soft_rebuild_timeout_specified (bool); + + const size_t& + build_alt_soft_rebuild_timeout () const; + + size_t& + build_alt_soft_rebuild_timeout (); + + void + build_alt_soft_rebuild_timeout (const size_t&); + + bool + build_alt_soft_rebuild_timeout_specified () const; + + void + build_alt_soft_rebuild_timeout_specified (bool); + + const duration& + build_alt_soft_rebuild_start () const; + + duration& + build_alt_soft_rebuild_start (); + + void + build_alt_soft_rebuild_start (const duration&); + + bool + build_alt_soft_rebuild_start_specified () const; + + void + build_alt_soft_rebuild_start_specified (bool); + + const duration& + build_alt_soft_rebuild_stop () const; + + duration& + build_alt_soft_rebuild_stop (); + + void + build_alt_soft_rebuild_stop (const duration&); + + bool + build_alt_soft_rebuild_stop_specified () const; + + void + build_alt_soft_rebuild_stop_specified (bool); + + const size_t& + build_hard_rebuild_timeout () const; + + size_t& + build_hard_rebuild_timeout (); + + void + build_hard_rebuild_timeout (const size_t&); + + bool + build_hard_rebuild_timeout_specified () const; + + void + build_hard_rebuild_timeout_specified (bool); + + const size_t& + build_alt_hard_rebuild_timeout () const; + + size_t& + build_alt_hard_rebuild_timeout (); + + void + build_alt_hard_rebuild_timeout (const size_t&); + + bool + build_alt_hard_rebuild_timeout_specified () const; + + void + build_alt_hard_rebuild_timeout_specified (bool); + + const duration& + build_alt_hard_rebuild_start () const; + + duration& + build_alt_hard_rebuild_start (); + + void + build_alt_hard_rebuild_start (const duration&); + + bool + build_alt_hard_rebuild_start_specified () const; + + void + build_alt_hard_rebuild_start_specified (bool); + + const duration& + build_alt_hard_rebuild_stop () const; + + duration& + build_alt_hard_rebuild_stop (); + + void + build_alt_hard_rebuild_stop (const duration&); + + bool + build_alt_hard_rebuild_stop_specified () const; + + void + build_alt_hard_rebuild_stop_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_build_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + path build_config_; + bool build_config_specified_; + dir_path build_bot_agent_keys_; + bool build_bot_agent_keys_specified_; + size_t build_forced_rebuild_timeout_; + bool build_forced_rebuild_timeout_specified_; + size_t build_soft_rebuild_timeout_; + bool build_soft_rebuild_timeout_specified_; + size_t build_alt_soft_rebuild_timeout_; + bool build_alt_soft_rebuild_timeout_specified_; + duration build_alt_soft_rebuild_start_; + bool build_alt_soft_rebuild_start_specified_; + duration build_alt_soft_rebuild_stop_; + bool build_alt_soft_rebuild_stop_specified_; + size_t build_hard_rebuild_timeout_; + bool build_hard_rebuild_timeout_specified_; + size_t build_alt_hard_rebuild_timeout_; + bool build_alt_hard_rebuild_timeout_specified_; + duration build_alt_hard_rebuild_start_; + bool build_alt_hard_rebuild_start_specified_; + duration build_alt_hard_rebuild_stop_; + bool build_alt_hard_rebuild_stop_specified_; + }; + + class build_db + { + public: + build_db (); + + build_db (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_db (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_db (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_db (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_db (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const string& + build_db_user () const; + + string& + build_db_user (); + + void + build_db_user (const string&); + + bool + build_db_user_specified () const; + + void + build_db_user_specified (bool); + + const string& + build_db_role () const; + + string& + build_db_role (); + + void + build_db_role (const string&); + + bool + build_db_role_specified () const; + + void + build_db_role_specified (bool); + + const string& + build_db_password () const; + + string& + build_db_password (); + + void + build_db_password (const string&); + + bool + build_db_password_specified () const; + + void + build_db_password_specified (bool); + + const string& + build_db_name () const; + + string& + build_db_name (); + + void + build_db_name (const string&); + + bool + build_db_name_specified () const; + + void + build_db_name_specified (bool); + + const string& + build_db_host () const; + + string& + build_db_host (); + + void + build_db_host (const string&); + + bool + build_db_host_specified () const; + + void + build_db_host_specified (bool); + + const uint16_t& + build_db_port () const; + + uint16_t& + build_db_port (); + + void + build_db_port (const uint16_t&); + + bool + build_db_port_specified () const; + + void + build_db_port_specified (bool); + + const size_t& + build_db_max_connections () const; + + size_t& + build_db_max_connections (); + + void + build_db_max_connections (const size_t&); + + bool + build_db_max_connections_specified () const; + + void + build_db_max_connections_specified (bool); + + const size_t& + build_db_retry () const; + + size_t& + build_db_retry (); + + void + build_db_retry (const size_t&); + + bool + build_db_retry_specified () const; + + void + build_db_retry_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_build_db_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + string build_db_user_; + bool build_db_user_specified_; + string build_db_role_; + bool build_db_role_specified_; + string build_db_password_; + bool build_db_password_specified_; + string build_db_name_; + bool build_db_name_specified_; + string build_db_host_; + bool build_db_host_specified_; + uint16_t build_db_port_; + bool build_db_port_specified_; + size_t build_db_max_connections_; + bool build_db_max_connections_specified_; + size_t build_db_retry_; + bool build_db_retry_specified_; + }; + + class page + { + public: + page (); + + page (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + page (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + page (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + page (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + page (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const web::xhtml::fragment& + logo () const; + + web::xhtml::fragment& + logo (); + + void + logo (const web::xhtml::fragment&); + + bool + logo_specified () const; + + void + logo_specified (bool); + + const vector<page_menu>& + menu () const; + + vector<page_menu>& + menu (); + + void + menu (const vector<page_menu>&); + + bool + menu_specified () const; + + void + menu_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_page_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + web::xhtml::fragment logo_; + bool logo_specified_; + vector<page_menu> menu_; + bool menu_specified_; + }; + + class search + { + public: + search (); + + search (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + search (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + search (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + search (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + search (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const uint16_t& + search_page_entries () const; + + uint16_t& + search_page_entries (); + + void + search_page_entries (const uint16_t&); + + bool + search_page_entries_specified () const; + + void + search_page_entries_specified (bool); + + const uint16_t& + search_pages () const; + + uint16_t& + search_pages (); + + void + search_pages (const uint16_t&); + + bool + search_pages_specified () const; + + void + search_pages_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_search_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + uint16_t search_page_entries_; + bool search_page_entries_specified_; + uint16_t search_pages_; + bool search_pages_specified_; + }; + + class package + { + public: + package (); + + package (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const uint16_t& + package_description () const; + + uint16_t& + package_description (); + + void + package_description (const uint16_t&); + + bool + package_description_specified () const; + + void + package_description_specified (bool); + + const uint16_t& + package_changes () const; + + uint16_t& + package_changes (); + + void + package_changes (const uint16_t&); + + bool + package_changes_specified () const; + + void + package_changes_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_package_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + uint16_t package_description_; + bool package_description_specified_; + uint16_t package_changes_; + bool package_changes_specified_; + }; + + class packages: public ::brep::options::search, + public ::brep::options::package_db, + public ::brep::options::page, + public ::brep::options::handler + { + public: + packages (); + + packages (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + packages (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + packages (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + packages (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + packages (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const string& + search_title () const; + + string& + search_title (); + + void + search_title (const string&); + + bool + search_title_specified () const; + + void + search_title_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_packages_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + string search_title_; + bool search_title_specified_; + }; + + class package_details: public ::brep::options::package, + public ::brep::options::search, + public ::brep::options::package_db, + public ::brep::options::page, + public ::brep::options::handler + { + public: + package_details (); + + package_details (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_details (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_details (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_details (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_details (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_package_details_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + }; + + class package_version_details: public ::brep::options::package, + public ::brep::options::package_db, + public ::brep::options::build, + public ::brep::options::build_db, + public ::brep::options::page, + public ::brep::options::handler + { + public: + package_version_details (); + + package_version_details (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_version_details (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_version_details (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_version_details (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_version_details (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_package_version_details_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + }; + + class repository_details: public ::brep::options::package_db, + public ::brep::options::page, + public ::brep::options::handler + { + public: + repository_details (); + + repository_details (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + repository_details (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + repository_details (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + repository_details (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + repository_details (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_repository_details_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + }; + + class build_task: public ::brep::options::build, + public ::brep::options::build_db, + public ::brep::options::handler + { + public: + build_task (); + + build_task (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_task (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_task (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_task (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_task (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const size_t& + build_task_request_max_size () const; + + size_t& + build_task_request_max_size (); + + void + build_task_request_max_size (const size_t&); + + bool + build_task_request_max_size_specified () const; + + void + build_task_request_max_size_specified (bool); + + const size_t& + build_result_timeout () const; + + size_t& + build_result_timeout (); + + void + build_result_timeout (const size_t&); + + bool + build_result_timeout_specified () const; + + void + build_result_timeout_specified (bool); + + const vector<pair<std::regex, string>>& + build_interactive_login () const; + + vector<pair<std::regex, string>>& + build_interactive_login (); + + void + build_interactive_login (const vector<pair<std::regex, string>>&); + + bool + build_interactive_login_specified () const; + + void + build_interactive_login_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_build_task_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + size_t build_task_request_max_size_; + bool build_task_request_max_size_specified_; + size_t build_result_timeout_; + bool build_result_timeout_specified_; + vector<pair<std::regex, string>> build_interactive_login_; + bool build_interactive_login_specified_; + }; + + class build_result: public ::brep::options::build, + public ::brep::options::package_db, + public ::brep::options::build_db, + public ::brep::options::handler + { + public: + build_result (); + + build_result (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_result (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_result (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_result (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_result (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const size_t& + build_result_request_max_size () const; + + size_t& + build_result_request_max_size (); + + void + build_result_request_max_size (const size_t&); + + bool + build_result_request_max_size_specified () const; + + void + build_result_request_max_size_specified (bool); + + const std::map<string, bool>& + build_toolchain_email () const; + + std::map<string, bool>& + build_toolchain_email (); + + void + build_toolchain_email (const std::map<string, bool>&); + + bool + build_toolchain_email_specified () const; + + void + build_toolchain_email_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_build_result_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + size_t build_result_request_max_size_; + bool build_result_request_max_size_specified_; + std::map<string, bool> build_toolchain_email_; + bool build_toolchain_email_specified_; + }; + + class build_log: public ::brep::options::build, + public ::brep::options::build_db, + public ::brep::options::handler + { + public: + build_log (); + + build_log (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_log (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_log (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_log (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_log (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_build_log_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + }; + + class build_force: public ::brep::options::build, + public ::brep::options::build_db, + public ::brep::options::handler + { + public: + build_force (); + + build_force (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_force (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_force (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_force (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_force (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_build_force_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + }; + + class builds: public ::brep::options::build, + public ::brep::options::build_db, + public ::brep::options::page, + public ::brep::options::handler + { + public: + builds (); + + builds (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + builds (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + builds (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + builds (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + builds (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const uint16_t& + build_page_entries () const; + + uint16_t& + build_page_entries (); + + void + build_page_entries (const uint16_t&); + + bool + build_page_entries_specified () const; + + void + build_page_entries_specified (bool); + + const uint16_t& + build_pages () const; + + uint16_t& + build_pages (); + + void + build_pages (const uint16_t&); + + bool + build_pages_specified () const; + + void + build_pages_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_builds_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + uint16_t build_page_entries_; + bool build_page_entries_specified_; + uint16_t build_pages_; + bool build_pages_specified_; + }; + + class build_configs: public ::brep::options::build, + public ::brep::options::page, + public ::brep::options::handler + { + public: + build_configs (); + + build_configs (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_configs (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_configs (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_configs (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_configs (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const uint16_t& + build_config_page_entries () const; + + uint16_t& + build_config_page_entries (); + + void + build_config_page_entries (const uint16_t&); + + bool + build_config_page_entries_specified () const; + + void + build_config_page_entries_specified (bool); + + const uint16_t& + build_config_pages () const; + + uint16_t& + build_config_pages (); + + void + build_config_pages (const uint16_t&); + + bool + build_config_pages_specified () const; + + void + build_config_pages_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_build_configs_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + uint16_t build_config_page_entries_; + bool build_config_page_entries_specified_; + uint16_t build_config_pages_; + bool build_config_pages_specified_; + }; + + class submit: public ::brep::options::page, + public ::brep::options::handler + { + public: + submit (); + + submit (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + submit (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + submit (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + submit (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + submit (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const dir_path& + submit_data () const; + + dir_path& + submit_data (); + + void + submit_data (const dir_path&); + + bool + submit_data_specified () const; + + void + submit_data_specified (bool); + + const dir_path& + submit_temp () const; + + dir_path& + submit_temp (); + + void + submit_temp (const dir_path&); + + bool + submit_temp_specified () const; + + void + submit_temp_specified (bool); + + const size_t& + submit_max_size () const; + + size_t& + submit_max_size (); + + void + submit_max_size (const size_t&); + + bool + submit_max_size_specified () const; + + void + submit_max_size_specified (bool); + + const path& + submit_form () const; + + path& + submit_form (); + + void + submit_form (const path&); + + bool + submit_form_specified () const; + + void + submit_form_specified (bool); + + const string& + submit_email () const; + + string& + submit_email (); + + void + submit_email (const string&); + + bool + submit_email_specified () const; + + void + submit_email_specified (bool); + + const path& + submit_handler () const; + + path& + submit_handler (); + + void + submit_handler (const path&); + + bool + submit_handler_specified () const; + + void + submit_handler_specified (bool); + + const strings& + submit_handler_argument () const; + + strings& + submit_handler_argument (); + + void + submit_handler_argument (const strings&); + + bool + submit_handler_argument_specified () const; + + void + submit_handler_argument_specified (bool); + + const size_t& + submit_handler_timeout () const; + + size_t& + submit_handler_timeout (); + + void + submit_handler_timeout (const size_t&); + + bool + submit_handler_timeout_specified () const; + + void + submit_handler_timeout_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_submit_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + dir_path submit_data_; + bool submit_data_specified_; + dir_path submit_temp_; + bool submit_temp_specified_; + size_t submit_max_size_; + bool submit_max_size_specified_; + path submit_form_; + bool submit_form_specified_; + string submit_email_; + bool submit_email_specified_; + path submit_handler_; + bool submit_handler_specified_; + strings submit_handler_argument_; + bool submit_handler_argument_specified_; + size_t submit_handler_timeout_; + bool submit_handler_timeout_specified_; + }; + + class ci: public ::brep::options::page, + public ::brep::options::handler + { + public: + ci (); + + ci (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + ci (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + ci (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + ci (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + ci (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const dir_path& + ci_data () const; + + dir_path& + ci_data (); + + void + ci_data (const dir_path&); + + bool + ci_data_specified () const; + + void + ci_data_specified (bool); + + const path& + ci_form () const; + + path& + ci_form (); + + void + ci_form (const path&); + + bool + ci_form_specified () const; + + void + ci_form_specified (bool); + + const string& + ci_email () const; + + string& + ci_email (); + + void + ci_email (const string&); + + bool + ci_email_specified () const; + + void + ci_email_specified (bool); + + const path& + ci_handler () const; + + path& + ci_handler (); + + void + ci_handler (const path&); + + bool + ci_handler_specified () const; + + void + ci_handler_specified (bool); + + const strings& + ci_handler_argument () const; + + strings& + ci_handler_argument (); + + void + ci_handler_argument (const strings&); + + bool + ci_handler_argument_specified () const; + + void + ci_handler_argument_specified (bool); + + const size_t& + ci_handler_timeout () const; + + size_t& + ci_handler_timeout (); + + void + ci_handler_timeout (const size_t&); + + bool + ci_handler_timeout_specified () const; + + void + ci_handler_timeout_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_ci_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + dir_path ci_data_; + bool ci_data_specified_; + path ci_form_; + bool ci_form_specified_; + string ci_email_; + bool ci_email_specified_; + path ci_handler_; + bool ci_handler_specified_; + strings ci_handler_argument_; + bool ci_handler_argument_specified_; + size_t ci_handler_timeout_; + bool ci_handler_timeout_specified_; + }; + + class repository_root: public ::brep::options::handler + { + public: + repository_root (); + + repository_root (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + repository_root (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + repository_root (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + repository_root (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + repository_root (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const string& + root_global_view () const; + + string& + root_global_view (); + + void + root_global_view (const string&); + + bool + root_global_view_specified () const; + + void + root_global_view_specified (bool); + + const string& + root_tenant_view () const; + + string& + root_tenant_view (); + + void + root_tenant_view (const string&); + + bool + root_tenant_view_specified () const; + + void + root_tenant_view_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_repository_root_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + string root_global_view_; + bool root_global_view_specified_; + string root_tenant_view_; + bool root_tenant_view_specified_; + }; + } + + namespace params + { + class packages + { + public: + packages (); + + packages (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + packages (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + packages (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + packages (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + packages (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const uint16_t& + page () const; + + uint16_t& + page (); + + void + page (const uint16_t&); + + bool + page_specified () const; + + void + page_specified (bool); + + const string& + q () const; + + string& + q (); + + void + q (const string&); + + bool + q_specified () const; + + void + q_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_packages_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + uint16_t page_; + bool page_specified_; + string q_; + bool q_specified_; + }; + + class package_details + { + public: + package_details (); + + package_details (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_details (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_details (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_details (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_details (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const uint16_t& + page () const; + + uint16_t& + page (); + + void + page (const uint16_t&); + + bool + page_specified () const; + + void + page_specified (bool); + + const string& + query () const; + + string& + query (); + + void + query (const string&); + + bool + query_specified () const; + + void + query_specified (bool); + + const page_form& + form () const; + + page_form& + form (); + + void + form (const page_form&); + + bool + form_specified () const; + + void + form_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_package_details_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + uint16_t page_; + bool page_specified_; + string query_; + bool query_specified_; + page_form form_; + bool form_specified_; + }; + + class package_version_details + { + public: + package_version_details (); + + package_version_details (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_version_details (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_version_details (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_version_details (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + package_version_details (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const page_form& + form () const; + + page_form& + form (); + + void + form (const page_form&); + + bool + form_specified () const; + + void + form_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_package_version_details_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + page_form form_; + bool form_specified_; + }; + + class repository_details + { + public: + repository_details (); + + repository_details (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + repository_details (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + repository_details (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + repository_details (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + repository_details (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_repository_details_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + }; + + class build_task + { + public: + build_task (); + + build_task (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_task (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_task (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_task (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_task (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const vector<string>& + repository () const; + + vector<string>& + repository (); + + void + repository (const vector<string>&); + + bool + repository_specified () const; + + void + repository_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_build_task_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + vector<string> repository_; + bool repository_specified_; + }; + + class build_result + { + public: + build_result (); + + build_result (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_result (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_result (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_result (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_result (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_build_result_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + }; + + class build_log + { + public: + build_log (); + + build_log (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_log (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_log (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_log (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_log (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_build_log_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + }; + + class build_force + { + public: + build_force (); + + build_force (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_force (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_force (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_force (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_force (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const string& + package () const; + + string& + package (); + + void + package (const string&); + + bool + package_specified () const; + + void + package_specified (bool); + + const string& + version () const; + + string& + version (); + + void + version (const string&); + + bool + version_specified () const; + + void + version_specified (bool); + + const string& + configuration () const; + + string& + configuration (); + + void + configuration (const string&); + + bool + configuration_specified () const; + + void + configuration_specified (bool); + + const string& + target () const; + + string& + target (); + + void + target (const string&); + + bool + target_specified () const; + + void + target_specified (bool); + + const string& + toolchain_name () const; + + string& + toolchain_name (); + + void + toolchain_name (const string&); + + bool + toolchain_name_specified () const; + + void + toolchain_name_specified (bool); + + const string& + toolchain_version () const; + + string& + toolchain_version (); + + void + toolchain_version (const string&); + + bool + toolchain_version_specified () const; + + void + toolchain_version_specified (bool); + + const string& + reason () const; + + string& + reason (); + + void + reason (const string&); + + bool + reason_specified () const; + + void + reason_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_build_force_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + string package_; + bool package_specified_; + string version_; + bool version_specified_; + string configuration_; + bool configuration_specified_; + string target_; + bool target_specified_; + string toolchain_name_; + bool toolchain_name_specified_; + string toolchain_version_; + bool toolchain_version_specified_; + string reason_; + bool reason_specified_; + }; + + class builds + { + public: + builds (); + + builds (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + builds (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + builds (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + builds (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + builds (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const uint16_t& + page () const; + + uint16_t& + page (); + + void + page (const uint16_t&); + + bool + page_specified () const; + + void + page_specified (bool); + + const string& + name () const; + + string& + name (); + + void + name (const string&); + + bool + name_specified () const; + + void + name_specified (bool); + + const string& + name_legacy () const; + + string& + name_legacy (); + + void + name_legacy (const string&); + + bool + name_legacy_specified () const; + + void + name_legacy_specified (bool); + + const string& + version () const; + + string& + version (); + + void + version (const string&); + + bool + version_specified () const; + + void + version_specified (bool); + + const string& + toolchain () const; + + string& + toolchain (); + + void + toolchain (const string&); + + bool + toolchain_specified () const; + + void + toolchain_specified (bool); + + const string& + configuration () const; + + string& + configuration (); + + void + configuration (const string&); + + bool + configuration_specified () const; + + void + configuration_specified (bool); + + const string& + machine () const; + + string& + machine (); + + void + machine (const string&); + + bool + machine_specified () const; + + void + machine_specified (bool); + + const string& + target () const; + + string& + target (); + + void + target (const string&); + + bool + target_specified () const; + + void + target_specified (bool); + + const string& + result () const; + + string& + result (); + + void + result (const string&); + + bool + result_specified () const; + + void + result_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_builds_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + uint16_t page_; + bool page_specified_; + string name_; + bool name_specified_; + string name_legacy_; + bool name_legacy_specified_; + string version_; + bool version_specified_; + string toolchain_; + bool toolchain_specified_; + string configuration_; + bool configuration_specified_; + string machine_; + bool machine_specified_; + string target_; + bool target_specified_; + string result_; + bool result_specified_; + }; + + class build_configs + { + public: + build_configs (); + + build_configs (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_configs (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_configs (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_configs (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + build_configs (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const string& + class_name () const; + + string& + class_name (); + + void + class_name (const string&); + + bool + class_name_specified () const; + + void + class_name_specified (bool); + + const uint16_t& + page () const; + + uint16_t& + page (); + + void + page (const uint16_t&); + + bool + page_specified () const; + + void + page_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_build_configs_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + string class_name_; + bool class_name_specified_; + uint16_t page_; + bool page_specified_; + }; + + class submit + { + public: + submit (); + + submit (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + submit (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + submit (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + submit (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + submit (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const string& + archive () const; + + string& + archive (); + + void + archive (const string&); + + bool + archive_specified () const; + + void + archive_specified (bool); + + const string& + sha256sum () const; + + string& + sha256sum (); + + void + sha256sum (const string&); + + bool + sha256sum_specified () const; + + void + sha256sum_specified (bool); + + const string& + simulate () const; + + string& + simulate (); + + void + simulate (const string&); + + bool + simulate_specified () const; + + void + simulate_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_submit_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + string archive_; + bool archive_specified_; + string sha256sum_; + bool sha256sum_specified_; + string simulate_; + bool simulate_specified_; + }; + + class ci + { + public: + ci (); + + ci (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + ci (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + ci (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + ci (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + ci (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors and modifiers. + // + const bpkg::repository_location& + repository () const; + + bpkg::repository_location& + repository (); + + void + repository (const bpkg::repository_location&); + + bool + repository_specified () const; + + void + repository_specified (bool); + + const strings& + package () const; + + strings& + package (); + + void + package (const strings&); + + bool + package_specified () const; + + void + package_specified (bool); + + const string& + overrides () const; + + string& + overrides (); + + void + overrides (const string&); + + bool + overrides_specified () const; + + void + overrides_specified (bool); + + const string& + interactive () const; + + string& + interactive (); + + void + interactive (const string&); + + bool + interactive_specified () const; + + void + interactive_specified (bool); + + const string& + simulate () const; + + string& + simulate (); + + void + simulate (const string&); + + bool + simulate_specified () const; + + void + simulate_specified (bool); + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Option description. + // + static const ::brep::cli::options& + description (); + + // Implementation details. + // + protected: + friend struct _cli_ci_desc_type; + + static void + fill (::brep::cli::options&); + + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + bpkg::repository_location repository_; + bool repository_specified_; + strings package_; + bool package_specified_; + string overrides_; + bool overrides_specified_; + string interactive_; + bool interactive_specified_; + string simulate_; + bool simulate_specified_; + }; + } +} + +#include <mod/module-options.ixx> + +// Begin epilogue. +// +// +// End epilogue. + +#endif // MOD_MODULE_OPTIONS_HXX diff --git a/mod/pregenerated/mod/module-options.ixx b/mod/pregenerated/mod/module-options.ixx new file mode 100644 index 0000000..ccccd51 --- /dev/null +++ b/mod/pregenerated/mod/module-options.ixx @@ -0,0 +1,3435 @@ +// -*- C++ -*- +// +// This file was generated by CLI, a command line interface +// compiler for C++. +// + +// Begin prologue. +// +// +// End prologue. + +#include <cassert> + +namespace brep +{ + namespace cli + { + // usage_para + // + inline usage_para:: + usage_para (value v) + : v_ (v) + { + } + + // unknown_mode + // + inline unknown_mode:: + unknown_mode (value v) + : v_ (v) + { + } + + // exception + // + inline ::std::ostream& + operator<< (::std::ostream& os, const exception& e) + { + e.print (os); + return os; + } + + // unknown_option + // + inline unknown_option:: + unknown_option (const std::string& option) + : option_ (option) + { + } + + inline const std::string& unknown_option:: + option () const + { + return option_; + } + + // unknown_argument + // + inline unknown_argument:: + unknown_argument (const std::string& argument) + : argument_ (argument) + { + } + + inline const std::string& unknown_argument:: + argument () const + { + return argument_; + } + + // missing_value + // + inline missing_value:: + missing_value (const std::string& option) + : option_ (option) + { + } + + inline const std::string& missing_value:: + option () const + { + return option_; + } + + // invalid_value + // + inline invalid_value:: + invalid_value (const std::string& option, + const std::string& value, + const std::string& message) + : option_ (option), + value_ (value), + message_ (message) + { + } + + inline const std::string& invalid_value:: + option () const + { + return option_; + } + + inline const std::string& invalid_value:: + value () const + { + return value_; + } + + inline const std::string& invalid_value:: + message () const + { + return message_; + } + + // file_io_failure + // + inline file_io_failure:: + file_io_failure (const std::string& file) + : file_ (file) + { + } + + inline const std::string& file_io_failure:: + file () const + { + return file_; + } + + // unmatched_quote + // + inline unmatched_quote:: + unmatched_quote (const std::string& argument) + : argument_ (argument) + { + } + + inline const std::string& unmatched_quote:: + argument () const + { + return argument_; + } + + // argv_scanner + // + inline argv_scanner:: + argv_scanner (int& argc, + char** argv, + bool erase, + std::size_t sp) + : start_position_ (sp + 1), + i_ (1), + argc_ (argc), + argv_ (argv), + erase_ (erase) + { + } + + inline argv_scanner:: + argv_scanner (int start, + int& argc, + char** argv, + bool erase, + std::size_t sp) + : start_position_ (sp + static_cast<std::size_t> (start)), + i_ (start), + argc_ (argc), + argv_ (argv), + erase_ (erase) + { + } + + inline int argv_scanner:: + end () const + { + return i_; + } + + // argv_file_scanner + // + inline argv_file_scanner:: + argv_file_scanner (int& argc, + char** argv, + const std::string& option, + bool erase, + std::size_t sp) + : argv_scanner (argc, argv, erase, sp), + option_ (option), + options_ (&option_info_), + options_count_ (1), + i_ (1), + skip_ (false) + { + option_info_.option = option_.c_str (); + option_info_.search_func = 0; + } + + inline argv_file_scanner:: + argv_file_scanner (int start, + int& argc, + char** argv, + const std::string& option, + bool erase, + std::size_t sp) + : argv_scanner (start, argc, argv, erase, sp), + option_ (option), + options_ (&option_info_), + options_count_ (1), + i_ (1), + skip_ (false) + { + option_info_.option = option_.c_str (); + option_info_.search_func = 0; + } + + inline argv_file_scanner:: + argv_file_scanner (const std::string& file, + const std::string& option, + std::size_t sp) + : argv_scanner (0, zero_argc_, 0, sp), + option_ (option), + options_ (&option_info_), + options_count_ (1), + i_ (1), + skip_ (false) + { + option_info_.option = option_.c_str (); + option_info_.search_func = 0; + + load (file); + } + + inline argv_file_scanner:: + argv_file_scanner (int& argc, + char** argv, + const option_info* options, + std::size_t options_count, + bool erase, + std::size_t sp) + : argv_scanner (argc, argv, erase, sp), + options_ (options), + options_count_ (options_count), + i_ (1), + skip_ (false) + { + } + + inline argv_file_scanner:: + argv_file_scanner (int start, + int& argc, + char** argv, + const option_info* options, + std::size_t options_count, + bool erase, + std::size_t sp) + : argv_scanner (start, argc, argv, erase, sp), + options_ (options), + options_count_ (options_count), + i_ (1), + skip_ (false) + { + } + + inline argv_file_scanner:: + argv_file_scanner (const std::string& file, + const option_info* options, + std::size_t options_count, + std::size_t sp) + : argv_scanner (0, zero_argc_, 0, sp), + options_ (options), + options_count_ (options_count), + i_ (1), + skip_ (false) + { + load (file); + } + + inline const std::string& option:: + name () const + { + return name_; + } + + inline const option_names& option:: + aliases () const + { + return aliases_; + } + + inline bool option:: + flag () const + { + return flag_; + } + + inline const std::string& option:: + default_value () const + { + return default_value_; + } + + inline option:: + option () + { + } + + inline option:: + option (const std::string& n, + const option_names& a, + bool f, + const std::string& dv) + : name_ (n), aliases_ (a), flag_ (f), default_value_ (dv) + { + } + + inline options::container_type::const_iterator options:: + find (const std::string& name) const + { + map_type::const_iterator i (map_.find (name)); + return i != map_.end () ? begin () + i->second : end (); + } + } +} + +namespace brep +{ + namespace options + { + // handler + // + + inline const string& handler:: + email () const + { + return this->email_; + } + + inline string& handler:: + email () + { + return this->email_; + } + + inline void handler:: + email (const string& x) + { + this->email_ = x; + } + + inline bool handler:: + email_specified () const + { + return this->email_specified_; + } + + inline void handler:: + email_specified (bool x) + { + this->email_specified_ = x; + } + + inline const string& handler:: + host () const + { + return this->host_; + } + + inline string& handler:: + host () + { + return this->host_; + } + + inline void handler:: + host (const string& x) + { + this->host_ = x; + } + + inline bool handler:: + host_specified () const + { + return this->host_specified_; + } + + inline void handler:: + host_specified (bool x) + { + this->host_specified_ = x; + } + + inline const dir_path& handler:: + root () const + { + return this->root_; + } + + inline dir_path& handler:: + root () + { + return this->root_; + } + + inline void handler:: + root (const dir_path& x) + { + this->root_ = x; + } + + inline bool handler:: + root_specified () const + { + return this->root_specified_; + } + + inline void handler:: + root_specified (bool x) + { + this->root_specified_ = x; + } + + inline const string& handler:: + tenant_name () const + { + return this->tenant_name_; + } + + inline string& handler:: + tenant_name () + { + return this->tenant_name_; + } + + inline void handler:: + tenant_name (const string& x) + { + this->tenant_name_ = x; + } + + inline bool handler:: + tenant_name_specified () const + { + return this->tenant_name_specified_; + } + + inline void handler:: + tenant_name_specified (bool x) + { + this->tenant_name_specified_ = x; + } + + inline const uint16_t& handler:: + verbosity () const + { + return this->verbosity_; + } + + inline uint16_t& handler:: + verbosity () + { + return this->verbosity_; + } + + inline void handler:: + verbosity (const uint16_t& x) + { + this->verbosity_ = x; + } + + inline bool handler:: + verbosity_specified () const + { + return this->verbosity_specified_; + } + + inline void handler:: + verbosity_specified (bool x) + { + this->verbosity_specified_ = x; + } + + // openssl_options + // + + inline const path& openssl_options:: + openssl () const + { + return this->openssl_; + } + + inline path& openssl_options:: + openssl () + { + return this->openssl_; + } + + inline void openssl_options:: + openssl (const path& x) + { + this->openssl_ = x; + } + + inline bool openssl_options:: + openssl_specified () const + { + return this->openssl_specified_; + } + + inline void openssl_options:: + openssl_specified (bool x) + { + this->openssl_specified_ = x; + } + + inline const strings& openssl_options:: + openssl_option () const + { + return this->openssl_option_; + } + + inline strings& openssl_options:: + openssl_option () + { + return this->openssl_option_; + } + + inline void openssl_options:: + openssl_option (const strings& x) + { + this->openssl_option_ = x; + } + + inline bool openssl_options:: + openssl_option_specified () const + { + return this->openssl_option_specified_; + } + + inline void openssl_options:: + openssl_option_specified (bool x) + { + this->openssl_option_specified_ = x; + } + + inline const strings& openssl_options:: + openssl_envvar () const + { + return this->openssl_envvar_; + } + + inline strings& openssl_options:: + openssl_envvar () + { + return this->openssl_envvar_; + } + + inline void openssl_options:: + openssl_envvar (const strings& x) + { + this->openssl_envvar_ = x; + } + + inline bool openssl_options:: + openssl_envvar_specified () const + { + return this->openssl_envvar_specified_; + } + + inline void openssl_options:: + openssl_envvar_specified (bool x) + { + this->openssl_envvar_specified_ = x; + } + + // package_db + // + + inline const string& package_db:: + package_db_user () const + { + return this->package_db_user_; + } + + inline string& package_db:: + package_db_user () + { + return this->package_db_user_; + } + + inline void package_db:: + package_db_user (const string& x) + { + this->package_db_user_ = x; + } + + inline bool package_db:: + package_db_user_specified () const + { + return this->package_db_user_specified_; + } + + inline void package_db:: + package_db_user_specified (bool x) + { + this->package_db_user_specified_ = x; + } + + inline const string& package_db:: + package_db_role () const + { + return this->package_db_role_; + } + + inline string& package_db:: + package_db_role () + { + return this->package_db_role_; + } + + inline void package_db:: + package_db_role (const string& x) + { + this->package_db_role_ = x; + } + + inline bool package_db:: + package_db_role_specified () const + { + return this->package_db_role_specified_; + } + + inline void package_db:: + package_db_role_specified (bool x) + { + this->package_db_role_specified_ = x; + } + + inline const string& package_db:: + package_db_password () const + { + return this->package_db_password_; + } + + inline string& package_db:: + package_db_password () + { + return this->package_db_password_; + } + + inline void package_db:: + package_db_password (const string& x) + { + this->package_db_password_ = x; + } + + inline bool package_db:: + package_db_password_specified () const + { + return this->package_db_password_specified_; + } + + inline void package_db:: + package_db_password_specified (bool x) + { + this->package_db_password_specified_ = x; + } + + inline const string& package_db:: + package_db_name () const + { + return this->package_db_name_; + } + + inline string& package_db:: + package_db_name () + { + return this->package_db_name_; + } + + inline void package_db:: + package_db_name (const string& x) + { + this->package_db_name_ = x; + } + + inline bool package_db:: + package_db_name_specified () const + { + return this->package_db_name_specified_; + } + + inline void package_db:: + package_db_name_specified (bool x) + { + this->package_db_name_specified_ = x; + } + + inline const string& package_db:: + package_db_host () const + { + return this->package_db_host_; + } + + inline string& package_db:: + package_db_host () + { + return this->package_db_host_; + } + + inline void package_db:: + package_db_host (const string& x) + { + this->package_db_host_ = x; + } + + inline bool package_db:: + package_db_host_specified () const + { + return this->package_db_host_specified_; + } + + inline void package_db:: + package_db_host_specified (bool x) + { + this->package_db_host_specified_ = x; + } + + inline const uint16_t& package_db:: + package_db_port () const + { + return this->package_db_port_; + } + + inline uint16_t& package_db:: + package_db_port () + { + return this->package_db_port_; + } + + inline void package_db:: + package_db_port (const uint16_t& x) + { + this->package_db_port_ = x; + } + + inline bool package_db:: + package_db_port_specified () const + { + return this->package_db_port_specified_; + } + + inline void package_db:: + package_db_port_specified (bool x) + { + this->package_db_port_specified_ = x; + } + + inline const size_t& package_db:: + package_db_max_connections () const + { + return this->package_db_max_connections_; + } + + inline size_t& package_db:: + package_db_max_connections () + { + return this->package_db_max_connections_; + } + + inline void package_db:: + package_db_max_connections (const size_t& x) + { + this->package_db_max_connections_ = x; + } + + inline bool package_db:: + package_db_max_connections_specified () const + { + return this->package_db_max_connections_specified_; + } + + inline void package_db:: + package_db_max_connections_specified (bool x) + { + this->package_db_max_connections_specified_ = x; + } + + inline const size_t& package_db:: + package_db_retry () const + { + return this->package_db_retry_; + } + + inline size_t& package_db:: + package_db_retry () + { + return this->package_db_retry_; + } + + inline void package_db:: + package_db_retry (const size_t& x) + { + this->package_db_retry_ = x; + } + + inline bool package_db:: + package_db_retry_specified () const + { + return this->package_db_retry_specified_; + } + + inline void package_db:: + package_db_retry_specified (bool x) + { + this->package_db_retry_specified_ = x; + } + + // build + // + + inline const path& build:: + build_config () const + { + return this->build_config_; + } + + inline path& build:: + build_config () + { + return this->build_config_; + } + + inline void build:: + build_config (const path& x) + { + this->build_config_ = x; + } + + inline bool build:: + build_config_specified () const + { + return this->build_config_specified_; + } + + inline void build:: + build_config_specified (bool x) + { + this->build_config_specified_ = x; + } + + inline const dir_path& build:: + build_bot_agent_keys () const + { + return this->build_bot_agent_keys_; + } + + inline dir_path& build:: + build_bot_agent_keys () + { + return this->build_bot_agent_keys_; + } + + inline void build:: + build_bot_agent_keys (const dir_path& x) + { + this->build_bot_agent_keys_ = x; + } + + inline bool build:: + build_bot_agent_keys_specified () const + { + return this->build_bot_agent_keys_specified_; + } + + inline void build:: + build_bot_agent_keys_specified (bool x) + { + this->build_bot_agent_keys_specified_ = x; + } + + inline const size_t& build:: + build_forced_rebuild_timeout () const + { + return this->build_forced_rebuild_timeout_; + } + + inline size_t& build:: + build_forced_rebuild_timeout () + { + return this->build_forced_rebuild_timeout_; + } + + inline void build:: + build_forced_rebuild_timeout (const size_t& x) + { + this->build_forced_rebuild_timeout_ = x; + } + + inline bool build:: + build_forced_rebuild_timeout_specified () const + { + return this->build_forced_rebuild_timeout_specified_; + } + + inline void build:: + build_forced_rebuild_timeout_specified (bool x) + { + this->build_forced_rebuild_timeout_specified_ = x; + } + + inline const size_t& build:: + build_soft_rebuild_timeout () const + { + return this->build_soft_rebuild_timeout_; + } + + inline size_t& build:: + build_soft_rebuild_timeout () + { + return this->build_soft_rebuild_timeout_; + } + + inline void build:: + build_soft_rebuild_timeout (const size_t& x) + { + this->build_soft_rebuild_timeout_ = x; + } + + inline bool build:: + build_soft_rebuild_timeout_specified () const + { + return this->build_soft_rebuild_timeout_specified_; + } + + inline void build:: + build_soft_rebuild_timeout_specified (bool x) + { + this->build_soft_rebuild_timeout_specified_ = x; + } + + inline const size_t& build:: + build_alt_soft_rebuild_timeout () const + { + return this->build_alt_soft_rebuild_timeout_; + } + + inline size_t& build:: + build_alt_soft_rebuild_timeout () + { + return this->build_alt_soft_rebuild_timeout_; + } + + inline void build:: + build_alt_soft_rebuild_timeout (const size_t& x) + { + this->build_alt_soft_rebuild_timeout_ = x; + } + + inline bool build:: + build_alt_soft_rebuild_timeout_specified () const + { + return this->build_alt_soft_rebuild_timeout_specified_; + } + + inline void build:: + build_alt_soft_rebuild_timeout_specified (bool x) + { + this->build_alt_soft_rebuild_timeout_specified_ = x; + } + + inline const duration& build:: + build_alt_soft_rebuild_start () const + { + return this->build_alt_soft_rebuild_start_; + } + + inline duration& build:: + build_alt_soft_rebuild_start () + { + return this->build_alt_soft_rebuild_start_; + } + + inline void build:: + build_alt_soft_rebuild_start (const duration& x) + { + this->build_alt_soft_rebuild_start_ = x; + } + + inline bool build:: + build_alt_soft_rebuild_start_specified () const + { + return this->build_alt_soft_rebuild_start_specified_; + } + + inline void build:: + build_alt_soft_rebuild_start_specified (bool x) + { + this->build_alt_soft_rebuild_start_specified_ = x; + } + + inline const duration& build:: + build_alt_soft_rebuild_stop () const + { + return this->build_alt_soft_rebuild_stop_; + } + + inline duration& build:: + build_alt_soft_rebuild_stop () + { + return this->build_alt_soft_rebuild_stop_; + } + + inline void build:: + build_alt_soft_rebuild_stop (const duration& x) + { + this->build_alt_soft_rebuild_stop_ = x; + } + + inline bool build:: + build_alt_soft_rebuild_stop_specified () const + { + return this->build_alt_soft_rebuild_stop_specified_; + } + + inline void build:: + build_alt_soft_rebuild_stop_specified (bool x) + { + this->build_alt_soft_rebuild_stop_specified_ = x; + } + + inline const size_t& build:: + build_hard_rebuild_timeout () const + { + return this->build_hard_rebuild_timeout_; + } + + inline size_t& build:: + build_hard_rebuild_timeout () + { + return this->build_hard_rebuild_timeout_; + } + + inline void build:: + build_hard_rebuild_timeout (const size_t& x) + { + this->build_hard_rebuild_timeout_ = x; + } + + inline bool build:: + build_hard_rebuild_timeout_specified () const + { + return this->build_hard_rebuild_timeout_specified_; + } + + inline void build:: + build_hard_rebuild_timeout_specified (bool x) + { + this->build_hard_rebuild_timeout_specified_ = x; + } + + inline const size_t& build:: + build_alt_hard_rebuild_timeout () const + { + return this->build_alt_hard_rebuild_timeout_; + } + + inline size_t& build:: + build_alt_hard_rebuild_timeout () + { + return this->build_alt_hard_rebuild_timeout_; + } + + inline void build:: + build_alt_hard_rebuild_timeout (const size_t& x) + { + this->build_alt_hard_rebuild_timeout_ = x; + } + + inline bool build:: + build_alt_hard_rebuild_timeout_specified () const + { + return this->build_alt_hard_rebuild_timeout_specified_; + } + + inline void build:: + build_alt_hard_rebuild_timeout_specified (bool x) + { + this->build_alt_hard_rebuild_timeout_specified_ = x; + } + + inline const duration& build:: + build_alt_hard_rebuild_start () const + { + return this->build_alt_hard_rebuild_start_; + } + + inline duration& build:: + build_alt_hard_rebuild_start () + { + return this->build_alt_hard_rebuild_start_; + } + + inline void build:: + build_alt_hard_rebuild_start (const duration& x) + { + this->build_alt_hard_rebuild_start_ = x; + } + + inline bool build:: + build_alt_hard_rebuild_start_specified () const + { + return this->build_alt_hard_rebuild_start_specified_; + } + + inline void build:: + build_alt_hard_rebuild_start_specified (bool x) + { + this->build_alt_hard_rebuild_start_specified_ = x; + } + + inline const duration& build:: + build_alt_hard_rebuild_stop () const + { + return this->build_alt_hard_rebuild_stop_; + } + + inline duration& build:: + build_alt_hard_rebuild_stop () + { + return this->build_alt_hard_rebuild_stop_; + } + + inline void build:: + build_alt_hard_rebuild_stop (const duration& x) + { + this->build_alt_hard_rebuild_stop_ = x; + } + + inline bool build:: + build_alt_hard_rebuild_stop_specified () const + { + return this->build_alt_hard_rebuild_stop_specified_; + } + + inline void build:: + build_alt_hard_rebuild_stop_specified (bool x) + { + this->build_alt_hard_rebuild_stop_specified_ = x; + } + + // build_db + // + + inline const string& build_db:: + build_db_user () const + { + return this->build_db_user_; + } + + inline string& build_db:: + build_db_user () + { + return this->build_db_user_; + } + + inline void build_db:: + build_db_user (const string& x) + { + this->build_db_user_ = x; + } + + inline bool build_db:: + build_db_user_specified () const + { + return this->build_db_user_specified_; + } + + inline void build_db:: + build_db_user_specified (bool x) + { + this->build_db_user_specified_ = x; + } + + inline const string& build_db:: + build_db_role () const + { + return this->build_db_role_; + } + + inline string& build_db:: + build_db_role () + { + return this->build_db_role_; + } + + inline void build_db:: + build_db_role (const string& x) + { + this->build_db_role_ = x; + } + + inline bool build_db:: + build_db_role_specified () const + { + return this->build_db_role_specified_; + } + + inline void build_db:: + build_db_role_specified (bool x) + { + this->build_db_role_specified_ = x; + } + + inline const string& build_db:: + build_db_password () const + { + return this->build_db_password_; + } + + inline string& build_db:: + build_db_password () + { + return this->build_db_password_; + } + + inline void build_db:: + build_db_password (const string& x) + { + this->build_db_password_ = x; + } + + inline bool build_db:: + build_db_password_specified () const + { + return this->build_db_password_specified_; + } + + inline void build_db:: + build_db_password_specified (bool x) + { + this->build_db_password_specified_ = x; + } + + inline const string& build_db:: + build_db_name () const + { + return this->build_db_name_; + } + + inline string& build_db:: + build_db_name () + { + return this->build_db_name_; + } + + inline void build_db:: + build_db_name (const string& x) + { + this->build_db_name_ = x; + } + + inline bool build_db:: + build_db_name_specified () const + { + return this->build_db_name_specified_; + } + + inline void build_db:: + build_db_name_specified (bool x) + { + this->build_db_name_specified_ = x; + } + + inline const string& build_db:: + build_db_host () const + { + return this->build_db_host_; + } + + inline string& build_db:: + build_db_host () + { + return this->build_db_host_; + } + + inline void build_db:: + build_db_host (const string& x) + { + this->build_db_host_ = x; + } + + inline bool build_db:: + build_db_host_specified () const + { + return this->build_db_host_specified_; + } + + inline void build_db:: + build_db_host_specified (bool x) + { + this->build_db_host_specified_ = x; + } + + inline const uint16_t& build_db:: + build_db_port () const + { + return this->build_db_port_; + } + + inline uint16_t& build_db:: + build_db_port () + { + return this->build_db_port_; + } + + inline void build_db:: + build_db_port (const uint16_t& x) + { + this->build_db_port_ = x; + } + + inline bool build_db:: + build_db_port_specified () const + { + return this->build_db_port_specified_; + } + + inline void build_db:: + build_db_port_specified (bool x) + { + this->build_db_port_specified_ = x; + } + + inline const size_t& build_db:: + build_db_max_connections () const + { + return this->build_db_max_connections_; + } + + inline size_t& build_db:: + build_db_max_connections () + { + return this->build_db_max_connections_; + } + + inline void build_db:: + build_db_max_connections (const size_t& x) + { + this->build_db_max_connections_ = x; + } + + inline bool build_db:: + build_db_max_connections_specified () const + { + return this->build_db_max_connections_specified_; + } + + inline void build_db:: + build_db_max_connections_specified (bool x) + { + this->build_db_max_connections_specified_ = x; + } + + inline const size_t& build_db:: + build_db_retry () const + { + return this->build_db_retry_; + } + + inline size_t& build_db:: + build_db_retry () + { + return this->build_db_retry_; + } + + inline void build_db:: + build_db_retry (const size_t& x) + { + this->build_db_retry_ = x; + } + + inline bool build_db:: + build_db_retry_specified () const + { + return this->build_db_retry_specified_; + } + + inline void build_db:: + build_db_retry_specified (bool x) + { + this->build_db_retry_specified_ = x; + } + + // page + // + + inline const web::xhtml::fragment& page:: + logo () const + { + return this->logo_; + } + + inline web::xhtml::fragment& page:: + logo () + { + return this->logo_; + } + + inline void page:: + logo (const web::xhtml::fragment& x) + { + this->logo_ = x; + } + + inline bool page:: + logo_specified () const + { + return this->logo_specified_; + } + + inline void page:: + logo_specified (bool x) + { + this->logo_specified_ = x; + } + + inline const vector<page_menu>& page:: + menu () const + { + return this->menu_; + } + + inline vector<page_menu>& page:: + menu () + { + return this->menu_; + } + + inline void page:: + menu (const vector<page_menu>& x) + { + this->menu_ = x; + } + + inline bool page:: + menu_specified () const + { + return this->menu_specified_; + } + + inline void page:: + menu_specified (bool x) + { + this->menu_specified_ = x; + } + + // search + // + + inline const uint16_t& search:: + search_page_entries () const + { + return this->search_page_entries_; + } + + inline uint16_t& search:: + search_page_entries () + { + return this->search_page_entries_; + } + + inline void search:: + search_page_entries (const uint16_t& x) + { + this->search_page_entries_ = x; + } + + inline bool search:: + search_page_entries_specified () const + { + return this->search_page_entries_specified_; + } + + inline void search:: + search_page_entries_specified (bool x) + { + this->search_page_entries_specified_ = x; + } + + inline const uint16_t& search:: + search_pages () const + { + return this->search_pages_; + } + + inline uint16_t& search:: + search_pages () + { + return this->search_pages_; + } + + inline void search:: + search_pages (const uint16_t& x) + { + this->search_pages_ = x; + } + + inline bool search:: + search_pages_specified () const + { + return this->search_pages_specified_; + } + + inline void search:: + search_pages_specified (bool x) + { + this->search_pages_specified_ = x; + } + + // package + // + + inline const uint16_t& package:: + package_description () const + { + return this->package_description_; + } + + inline uint16_t& package:: + package_description () + { + return this->package_description_; + } + + inline void package:: + package_description (const uint16_t& x) + { + this->package_description_ = x; + } + + inline bool package:: + package_description_specified () const + { + return this->package_description_specified_; + } + + inline void package:: + package_description_specified (bool x) + { + this->package_description_specified_ = x; + } + + inline const uint16_t& package:: + package_changes () const + { + return this->package_changes_; + } + + inline uint16_t& package:: + package_changes () + { + return this->package_changes_; + } + + inline void package:: + package_changes (const uint16_t& x) + { + this->package_changes_ = x; + } + + inline bool package:: + package_changes_specified () const + { + return this->package_changes_specified_; + } + + inline void package:: + package_changes_specified (bool x) + { + this->package_changes_specified_ = x; + } + + // packages + // + + inline const string& packages:: + search_title () const + { + return this->search_title_; + } + + inline string& packages:: + search_title () + { + return this->search_title_; + } + + inline void packages:: + search_title (const string& x) + { + this->search_title_ = x; + } + + inline bool packages:: + search_title_specified () const + { + return this->search_title_specified_; + } + + inline void packages:: + search_title_specified (bool x) + { + this->search_title_specified_ = x; + } + + // package_details + // + + // package_version_details + // + + // repository_details + // + + // build_task + // + + inline const size_t& build_task:: + build_task_request_max_size () const + { + return this->build_task_request_max_size_; + } + + inline size_t& build_task:: + build_task_request_max_size () + { + return this->build_task_request_max_size_; + } + + inline void build_task:: + build_task_request_max_size (const size_t& x) + { + this->build_task_request_max_size_ = x; + } + + inline bool build_task:: + build_task_request_max_size_specified () const + { + return this->build_task_request_max_size_specified_; + } + + inline void build_task:: + build_task_request_max_size_specified (bool x) + { + this->build_task_request_max_size_specified_ = x; + } + + inline const size_t& build_task:: + build_result_timeout () const + { + return this->build_result_timeout_; + } + + inline size_t& build_task:: + build_result_timeout () + { + return this->build_result_timeout_; + } + + inline void build_task:: + build_result_timeout (const size_t& x) + { + this->build_result_timeout_ = x; + } + + inline bool build_task:: + build_result_timeout_specified () const + { + return this->build_result_timeout_specified_; + } + + inline void build_task:: + build_result_timeout_specified (bool x) + { + this->build_result_timeout_specified_ = x; + } + + inline const vector<pair<std::regex, string>>& build_task:: + build_interactive_login () const + { + return this->build_interactive_login_; + } + + inline vector<pair<std::regex, string>>& build_task:: + build_interactive_login () + { + return this->build_interactive_login_; + } + + inline void build_task:: + build_interactive_login (const vector<pair<std::regex, string>>& x) + { + this->build_interactive_login_ = x; + } + + inline bool build_task:: + build_interactive_login_specified () const + { + return this->build_interactive_login_specified_; + } + + inline void build_task:: + build_interactive_login_specified (bool x) + { + this->build_interactive_login_specified_ = x; + } + + // build_result + // + + inline const size_t& build_result:: + build_result_request_max_size () const + { + return this->build_result_request_max_size_; + } + + inline size_t& build_result:: + build_result_request_max_size () + { + return this->build_result_request_max_size_; + } + + inline void build_result:: + build_result_request_max_size (const size_t& x) + { + this->build_result_request_max_size_ = x; + } + + inline bool build_result:: + build_result_request_max_size_specified () const + { + return this->build_result_request_max_size_specified_; + } + + inline void build_result:: + build_result_request_max_size_specified (bool x) + { + this->build_result_request_max_size_specified_ = x; + } + + inline const std::map<string, bool>& build_result:: + build_toolchain_email () const + { + return this->build_toolchain_email_; + } + + inline std::map<string, bool>& build_result:: + build_toolchain_email () + { + return this->build_toolchain_email_; + } + + inline void build_result:: + build_toolchain_email (const std::map<string, bool>& x) + { + this->build_toolchain_email_ = x; + } + + inline bool build_result:: + build_toolchain_email_specified () const + { + return this->build_toolchain_email_specified_; + } + + inline void build_result:: + build_toolchain_email_specified (bool x) + { + this->build_toolchain_email_specified_ = x; + } + + // build_log + // + + // build_force + // + + // builds + // + + inline const uint16_t& builds:: + build_page_entries () const + { + return this->build_page_entries_; + } + + inline uint16_t& builds:: + build_page_entries () + { + return this->build_page_entries_; + } + + inline void builds:: + build_page_entries (const uint16_t& x) + { + this->build_page_entries_ = x; + } + + inline bool builds:: + build_page_entries_specified () const + { + return this->build_page_entries_specified_; + } + + inline void builds:: + build_page_entries_specified (bool x) + { + this->build_page_entries_specified_ = x; + } + + inline const uint16_t& builds:: + build_pages () const + { + return this->build_pages_; + } + + inline uint16_t& builds:: + build_pages () + { + return this->build_pages_; + } + + inline void builds:: + build_pages (const uint16_t& x) + { + this->build_pages_ = x; + } + + inline bool builds:: + build_pages_specified () const + { + return this->build_pages_specified_; + } + + inline void builds:: + build_pages_specified (bool x) + { + this->build_pages_specified_ = x; + } + + // build_configs + // + + inline const uint16_t& build_configs:: + build_config_page_entries () const + { + return this->build_config_page_entries_; + } + + inline uint16_t& build_configs:: + build_config_page_entries () + { + return this->build_config_page_entries_; + } + + inline void build_configs:: + build_config_page_entries (const uint16_t& x) + { + this->build_config_page_entries_ = x; + } + + inline bool build_configs:: + build_config_page_entries_specified () const + { + return this->build_config_page_entries_specified_; + } + + inline void build_configs:: + build_config_page_entries_specified (bool x) + { + this->build_config_page_entries_specified_ = x; + } + + inline const uint16_t& build_configs:: + build_config_pages () const + { + return this->build_config_pages_; + } + + inline uint16_t& build_configs:: + build_config_pages () + { + return this->build_config_pages_; + } + + inline void build_configs:: + build_config_pages (const uint16_t& x) + { + this->build_config_pages_ = x; + } + + inline bool build_configs:: + build_config_pages_specified () const + { + return this->build_config_pages_specified_; + } + + inline void build_configs:: + build_config_pages_specified (bool x) + { + this->build_config_pages_specified_ = x; + } + + // submit + // + + inline const dir_path& submit:: + submit_data () const + { + return this->submit_data_; + } + + inline dir_path& submit:: + submit_data () + { + return this->submit_data_; + } + + inline void submit:: + submit_data (const dir_path& x) + { + this->submit_data_ = x; + } + + inline bool submit:: + submit_data_specified () const + { + return this->submit_data_specified_; + } + + inline void submit:: + submit_data_specified (bool x) + { + this->submit_data_specified_ = x; + } + + inline const dir_path& submit:: + submit_temp () const + { + return this->submit_temp_; + } + + inline dir_path& submit:: + submit_temp () + { + return this->submit_temp_; + } + + inline void submit:: + submit_temp (const dir_path& x) + { + this->submit_temp_ = x; + } + + inline bool submit:: + submit_temp_specified () const + { + return this->submit_temp_specified_; + } + + inline void submit:: + submit_temp_specified (bool x) + { + this->submit_temp_specified_ = x; + } + + inline const size_t& submit:: + submit_max_size () const + { + return this->submit_max_size_; + } + + inline size_t& submit:: + submit_max_size () + { + return this->submit_max_size_; + } + + inline void submit:: + submit_max_size (const size_t& x) + { + this->submit_max_size_ = x; + } + + inline bool submit:: + submit_max_size_specified () const + { + return this->submit_max_size_specified_; + } + + inline void submit:: + submit_max_size_specified (bool x) + { + this->submit_max_size_specified_ = x; + } + + inline const path& submit:: + submit_form () const + { + return this->submit_form_; + } + + inline path& submit:: + submit_form () + { + return this->submit_form_; + } + + inline void submit:: + submit_form (const path& x) + { + this->submit_form_ = x; + } + + inline bool submit:: + submit_form_specified () const + { + return this->submit_form_specified_; + } + + inline void submit:: + submit_form_specified (bool x) + { + this->submit_form_specified_ = x; + } + + inline const string& submit:: + submit_email () const + { + return this->submit_email_; + } + + inline string& submit:: + submit_email () + { + return this->submit_email_; + } + + inline void submit:: + submit_email (const string& x) + { + this->submit_email_ = x; + } + + inline bool submit:: + submit_email_specified () const + { + return this->submit_email_specified_; + } + + inline void submit:: + submit_email_specified (bool x) + { + this->submit_email_specified_ = x; + } + + inline const path& submit:: + submit_handler () const + { + return this->submit_handler_; + } + + inline path& submit:: + submit_handler () + { + return this->submit_handler_; + } + + inline void submit:: + submit_handler (const path& x) + { + this->submit_handler_ = x; + } + + inline bool submit:: + submit_handler_specified () const + { + return this->submit_handler_specified_; + } + + inline void submit:: + submit_handler_specified (bool x) + { + this->submit_handler_specified_ = x; + } + + inline const strings& submit:: + submit_handler_argument () const + { + return this->submit_handler_argument_; + } + + inline strings& submit:: + submit_handler_argument () + { + return this->submit_handler_argument_; + } + + inline void submit:: + submit_handler_argument (const strings& x) + { + this->submit_handler_argument_ = x; + } + + inline bool submit:: + submit_handler_argument_specified () const + { + return this->submit_handler_argument_specified_; + } + + inline void submit:: + submit_handler_argument_specified (bool x) + { + this->submit_handler_argument_specified_ = x; + } + + inline const size_t& submit:: + submit_handler_timeout () const + { + return this->submit_handler_timeout_; + } + + inline size_t& submit:: + submit_handler_timeout () + { + return this->submit_handler_timeout_; + } + + inline void submit:: + submit_handler_timeout (const size_t& x) + { + this->submit_handler_timeout_ = x; + } + + inline bool submit:: + submit_handler_timeout_specified () const + { + return this->submit_handler_timeout_specified_; + } + + inline void submit:: + submit_handler_timeout_specified (bool x) + { + this->submit_handler_timeout_specified_ = x; + } + + // ci + // + + inline const dir_path& ci:: + ci_data () const + { + return this->ci_data_; + } + + inline dir_path& ci:: + ci_data () + { + return this->ci_data_; + } + + inline void ci:: + ci_data (const dir_path& x) + { + this->ci_data_ = x; + } + + inline bool ci:: + ci_data_specified () const + { + return this->ci_data_specified_; + } + + inline void ci:: + ci_data_specified (bool x) + { + this->ci_data_specified_ = x; + } + + inline const path& ci:: + ci_form () const + { + return this->ci_form_; + } + + inline path& ci:: + ci_form () + { + return this->ci_form_; + } + + inline void ci:: + ci_form (const path& x) + { + this->ci_form_ = x; + } + + inline bool ci:: + ci_form_specified () const + { + return this->ci_form_specified_; + } + + inline void ci:: + ci_form_specified (bool x) + { + this->ci_form_specified_ = x; + } + + inline const string& ci:: + ci_email () const + { + return this->ci_email_; + } + + inline string& ci:: + ci_email () + { + return this->ci_email_; + } + + inline void ci:: + ci_email (const string& x) + { + this->ci_email_ = x; + } + + inline bool ci:: + ci_email_specified () const + { + return this->ci_email_specified_; + } + + inline void ci:: + ci_email_specified (bool x) + { + this->ci_email_specified_ = x; + } + + inline const path& ci:: + ci_handler () const + { + return this->ci_handler_; + } + + inline path& ci:: + ci_handler () + { + return this->ci_handler_; + } + + inline void ci:: + ci_handler (const path& x) + { + this->ci_handler_ = x; + } + + inline bool ci:: + ci_handler_specified () const + { + return this->ci_handler_specified_; + } + + inline void ci:: + ci_handler_specified (bool x) + { + this->ci_handler_specified_ = x; + } + + inline const strings& ci:: + ci_handler_argument () const + { + return this->ci_handler_argument_; + } + + inline strings& ci:: + ci_handler_argument () + { + return this->ci_handler_argument_; + } + + inline void ci:: + ci_handler_argument (const strings& x) + { + this->ci_handler_argument_ = x; + } + + inline bool ci:: + ci_handler_argument_specified () const + { + return this->ci_handler_argument_specified_; + } + + inline void ci:: + ci_handler_argument_specified (bool x) + { + this->ci_handler_argument_specified_ = x; + } + + inline const size_t& ci:: + ci_handler_timeout () const + { + return this->ci_handler_timeout_; + } + + inline size_t& ci:: + ci_handler_timeout () + { + return this->ci_handler_timeout_; + } + + inline void ci:: + ci_handler_timeout (const size_t& x) + { + this->ci_handler_timeout_ = x; + } + + inline bool ci:: + ci_handler_timeout_specified () const + { + return this->ci_handler_timeout_specified_; + } + + inline void ci:: + ci_handler_timeout_specified (bool x) + { + this->ci_handler_timeout_specified_ = x; + } + + // repository_root + // + + inline const string& repository_root:: + root_global_view () const + { + return this->root_global_view_; + } + + inline string& repository_root:: + root_global_view () + { + return this->root_global_view_; + } + + inline void repository_root:: + root_global_view (const string& x) + { + this->root_global_view_ = x; + } + + inline bool repository_root:: + root_global_view_specified () const + { + return this->root_global_view_specified_; + } + + inline void repository_root:: + root_global_view_specified (bool x) + { + this->root_global_view_specified_ = x; + } + + inline const string& repository_root:: + root_tenant_view () const + { + return this->root_tenant_view_; + } + + inline string& repository_root:: + root_tenant_view () + { + return this->root_tenant_view_; + } + + inline void repository_root:: + root_tenant_view (const string& x) + { + this->root_tenant_view_ = x; + } + + inline bool repository_root:: + root_tenant_view_specified () const + { + return this->root_tenant_view_specified_; + } + + inline void repository_root:: + root_tenant_view_specified (bool x) + { + this->root_tenant_view_specified_ = x; + } + } + + namespace params + { + // packages + // + + inline const uint16_t& packages:: + page () const + { + return this->page_; + } + + inline uint16_t& packages:: + page () + { + return this->page_; + } + + inline void packages:: + page (const uint16_t& x) + { + this->page_ = x; + } + + inline bool packages:: + page_specified () const + { + return this->page_specified_; + } + + inline void packages:: + page_specified (bool x) + { + this->page_specified_ = x; + } + + inline const string& packages:: + q () const + { + return this->q_; + } + + inline string& packages:: + q () + { + return this->q_; + } + + inline void packages:: + q (const string& x) + { + this->q_ = x; + } + + inline bool packages:: + q_specified () const + { + return this->q_specified_; + } + + inline void packages:: + q_specified (bool x) + { + this->q_specified_ = x; + } + + // package_details + // + + inline const uint16_t& package_details:: + page () const + { + return this->page_; + } + + inline uint16_t& package_details:: + page () + { + return this->page_; + } + + inline void package_details:: + page (const uint16_t& x) + { + this->page_ = x; + } + + inline bool package_details:: + page_specified () const + { + return this->page_specified_; + } + + inline void package_details:: + page_specified (bool x) + { + this->page_specified_ = x; + } + + inline const string& package_details:: + query () const + { + return this->query_; + } + + inline string& package_details:: + query () + { + return this->query_; + } + + inline void package_details:: + query (const string& x) + { + this->query_ = x; + } + + inline bool package_details:: + query_specified () const + { + return this->query_specified_; + } + + inline void package_details:: + query_specified (bool x) + { + this->query_specified_ = x; + } + + inline const page_form& package_details:: + form () const + { + return this->form_; + } + + inline page_form& package_details:: + form () + { + return this->form_; + } + + inline void package_details:: + form (const page_form& x) + { + this->form_ = x; + } + + inline bool package_details:: + form_specified () const + { + return this->form_specified_; + } + + inline void package_details:: + form_specified (bool x) + { + this->form_specified_ = x; + } + + // package_version_details + // + + inline const page_form& package_version_details:: + form () const + { + return this->form_; + } + + inline page_form& package_version_details:: + form () + { + return this->form_; + } + + inline void package_version_details:: + form (const page_form& x) + { + this->form_ = x; + } + + inline bool package_version_details:: + form_specified () const + { + return this->form_specified_; + } + + inline void package_version_details:: + form_specified (bool x) + { + this->form_specified_ = x; + } + + // repository_details + // + + // build_task + // + + inline const vector<string>& build_task:: + repository () const + { + return this->repository_; + } + + inline vector<string>& build_task:: + repository () + { + return this->repository_; + } + + inline void build_task:: + repository (const vector<string>& x) + { + this->repository_ = x; + } + + inline bool build_task:: + repository_specified () const + { + return this->repository_specified_; + } + + inline void build_task:: + repository_specified (bool x) + { + this->repository_specified_ = x; + } + + // build_result + // + + // build_log + // + + // build_force + // + + inline const string& build_force:: + package () const + { + return this->package_; + } + + inline string& build_force:: + package () + { + return this->package_; + } + + inline void build_force:: + package (const string& x) + { + this->package_ = x; + } + + inline bool build_force:: + package_specified () const + { + return this->package_specified_; + } + + inline void build_force:: + package_specified (bool x) + { + this->package_specified_ = x; + } + + inline const string& build_force:: + version () const + { + return this->version_; + } + + inline string& build_force:: + version () + { + return this->version_; + } + + inline void build_force:: + version (const string& x) + { + this->version_ = x; + } + + inline bool build_force:: + version_specified () const + { + return this->version_specified_; + } + + inline void build_force:: + version_specified (bool x) + { + this->version_specified_ = x; + } + + inline const string& build_force:: + configuration () const + { + return this->configuration_; + } + + inline string& build_force:: + configuration () + { + return this->configuration_; + } + + inline void build_force:: + configuration (const string& x) + { + this->configuration_ = x; + } + + inline bool build_force:: + configuration_specified () const + { + return this->configuration_specified_; + } + + inline void build_force:: + configuration_specified (bool x) + { + this->configuration_specified_ = x; + } + + inline const string& build_force:: + target () const + { + return this->target_; + } + + inline string& build_force:: + target () + { + return this->target_; + } + + inline void build_force:: + target (const string& x) + { + this->target_ = x; + } + + inline bool build_force:: + target_specified () const + { + return this->target_specified_; + } + + inline void build_force:: + target_specified (bool x) + { + this->target_specified_ = x; + } + + inline const string& build_force:: + toolchain_name () const + { + return this->toolchain_name_; + } + + inline string& build_force:: + toolchain_name () + { + return this->toolchain_name_; + } + + inline void build_force:: + toolchain_name (const string& x) + { + this->toolchain_name_ = x; + } + + inline bool build_force:: + toolchain_name_specified () const + { + return this->toolchain_name_specified_; + } + + inline void build_force:: + toolchain_name_specified (bool x) + { + this->toolchain_name_specified_ = x; + } + + inline const string& build_force:: + toolchain_version () const + { + return this->toolchain_version_; + } + + inline string& build_force:: + toolchain_version () + { + return this->toolchain_version_; + } + + inline void build_force:: + toolchain_version (const string& x) + { + this->toolchain_version_ = x; + } + + inline bool build_force:: + toolchain_version_specified () const + { + return this->toolchain_version_specified_; + } + + inline void build_force:: + toolchain_version_specified (bool x) + { + this->toolchain_version_specified_ = x; + } + + inline const string& build_force:: + reason () const + { + return this->reason_; + } + + inline string& build_force:: + reason () + { + return this->reason_; + } + + inline void build_force:: + reason (const string& x) + { + this->reason_ = x; + } + + inline bool build_force:: + reason_specified () const + { + return this->reason_specified_; + } + + inline void build_force:: + reason_specified (bool x) + { + this->reason_specified_ = x; + } + + // builds + // + + inline const uint16_t& builds:: + page () const + { + return this->page_; + } + + inline uint16_t& builds:: + page () + { + return this->page_; + } + + inline void builds:: + page (const uint16_t& x) + { + this->page_ = x; + } + + inline bool builds:: + page_specified () const + { + return this->page_specified_; + } + + inline void builds:: + page_specified (bool x) + { + this->page_specified_ = x; + } + + inline const string& builds:: + name () const + { + return this->name_; + } + + inline string& builds:: + name () + { + return this->name_; + } + + inline void builds:: + name (const string& x) + { + this->name_ = x; + } + + inline bool builds:: + name_specified () const + { + return this->name_specified_; + } + + inline void builds:: + name_specified (bool x) + { + this->name_specified_ = x; + } + + inline const string& builds:: + name_legacy () const + { + return this->name_legacy_; + } + + inline string& builds:: + name_legacy () + { + return this->name_legacy_; + } + + inline void builds:: + name_legacy (const string& x) + { + this->name_legacy_ = x; + } + + inline bool builds:: + name_legacy_specified () const + { + return this->name_legacy_specified_; + } + + inline void builds:: + name_legacy_specified (bool x) + { + this->name_legacy_specified_ = x; + } + + inline const string& builds:: + version () const + { + return this->version_; + } + + inline string& builds:: + version () + { + return this->version_; + } + + inline void builds:: + version (const string& x) + { + this->version_ = x; + } + + inline bool builds:: + version_specified () const + { + return this->version_specified_; + } + + inline void builds:: + version_specified (bool x) + { + this->version_specified_ = x; + } + + inline const string& builds:: + toolchain () const + { + return this->toolchain_; + } + + inline string& builds:: + toolchain () + { + return this->toolchain_; + } + + inline void builds:: + toolchain (const string& x) + { + this->toolchain_ = x; + } + + inline bool builds:: + toolchain_specified () const + { + return this->toolchain_specified_; + } + + inline void builds:: + toolchain_specified (bool x) + { + this->toolchain_specified_ = x; + } + + inline const string& builds:: + configuration () const + { + return this->configuration_; + } + + inline string& builds:: + configuration () + { + return this->configuration_; + } + + inline void builds:: + configuration (const string& x) + { + this->configuration_ = x; + } + + inline bool builds:: + configuration_specified () const + { + return this->configuration_specified_; + } + + inline void builds:: + configuration_specified (bool x) + { + this->configuration_specified_ = x; + } + + inline const string& builds:: + machine () const + { + return this->machine_; + } + + inline string& builds:: + machine () + { + return this->machine_; + } + + inline void builds:: + machine (const string& x) + { + this->machine_ = x; + } + + inline bool builds:: + machine_specified () const + { + return this->machine_specified_; + } + + inline void builds:: + machine_specified (bool x) + { + this->machine_specified_ = x; + } + + inline const string& builds:: + target () const + { + return this->target_; + } + + inline string& builds:: + target () + { + return this->target_; + } + + inline void builds:: + target (const string& x) + { + this->target_ = x; + } + + inline bool builds:: + target_specified () const + { + return this->target_specified_; + } + + inline void builds:: + target_specified (bool x) + { + this->target_specified_ = x; + } + + inline const string& builds:: + result () const + { + return this->result_; + } + + inline string& builds:: + result () + { + return this->result_; + } + + inline void builds:: + result (const string& x) + { + this->result_ = x; + } + + inline bool builds:: + result_specified () const + { + return this->result_specified_; + } + + inline void builds:: + result_specified (bool x) + { + this->result_specified_ = x; + } + + // build_configs + // + + inline const string& build_configs:: + class_name () const + { + return this->class_name_; + } + + inline string& build_configs:: + class_name () + { + return this->class_name_; + } + + inline void build_configs:: + class_name (const string& x) + { + this->class_name_ = x; + } + + inline bool build_configs:: + class_name_specified () const + { + return this->class_name_specified_; + } + + inline void build_configs:: + class_name_specified (bool x) + { + this->class_name_specified_ = x; + } + + inline const uint16_t& build_configs:: + page () const + { + return this->page_; + } + + inline uint16_t& build_configs:: + page () + { + return this->page_; + } + + inline void build_configs:: + page (const uint16_t& x) + { + this->page_ = x; + } + + inline bool build_configs:: + page_specified () const + { + return this->page_specified_; + } + + inline void build_configs:: + page_specified (bool x) + { + this->page_specified_ = x; + } + + // submit + // + + inline const string& submit:: + archive () const + { + return this->archive_; + } + + inline string& submit:: + archive () + { + return this->archive_; + } + + inline void submit:: + archive (const string& x) + { + this->archive_ = x; + } + + inline bool submit:: + archive_specified () const + { + return this->archive_specified_; + } + + inline void submit:: + archive_specified (bool x) + { + this->archive_specified_ = x; + } + + inline const string& submit:: + sha256sum () const + { + return this->sha256sum_; + } + + inline string& submit:: + sha256sum () + { + return this->sha256sum_; + } + + inline void submit:: + sha256sum (const string& x) + { + this->sha256sum_ = x; + } + + inline bool submit:: + sha256sum_specified () const + { + return this->sha256sum_specified_; + } + + inline void submit:: + sha256sum_specified (bool x) + { + this->sha256sum_specified_ = x; + } + + inline const string& submit:: + simulate () const + { + return this->simulate_; + } + + inline string& submit:: + simulate () + { + return this->simulate_; + } + + inline void submit:: + simulate (const string& x) + { + this->simulate_ = x; + } + + inline bool submit:: + simulate_specified () const + { + return this->simulate_specified_; + } + + inline void submit:: + simulate_specified (bool x) + { + this->simulate_specified_ = x; + } + + // ci + // + + inline const bpkg::repository_location& ci:: + repository () const + { + return this->repository_; + } + + inline bpkg::repository_location& ci:: + repository () + { + return this->repository_; + } + + inline void ci:: + repository (const bpkg::repository_location& x) + { + this->repository_ = x; + } + + inline bool ci:: + repository_specified () const + { + return this->repository_specified_; + } + + inline void ci:: + repository_specified (bool x) + { + this->repository_specified_ = x; + } + + inline const strings& ci:: + package () const + { + return this->package_; + } + + inline strings& ci:: + package () + { + return this->package_; + } + + inline void ci:: + package (const strings& x) + { + this->package_ = x; + } + + inline bool ci:: + package_specified () const + { + return this->package_specified_; + } + + inline void ci:: + package_specified (bool x) + { + this->package_specified_ = x; + } + + inline const string& ci:: + overrides () const + { + return this->overrides_; + } + + inline string& ci:: + overrides () + { + return this->overrides_; + } + + inline void ci:: + overrides (const string& x) + { + this->overrides_ = x; + } + + inline bool ci:: + overrides_specified () const + { + return this->overrides_specified_; + } + + inline void ci:: + overrides_specified (bool x) + { + this->overrides_specified_ = x; + } + + inline const string& ci:: + interactive () const + { + return this->interactive_; + } + + inline string& ci:: + interactive () + { + return this->interactive_; + } + + inline void ci:: + interactive (const string& x) + { + this->interactive_ = x; + } + + inline bool ci:: + interactive_specified () const + { + return this->interactive_specified_; + } + + inline void ci:: + interactive_specified (bool x) + { + this->interactive_specified_ = x; + } + + inline const string& ci:: + simulate () const + { + return this->simulate_; + } + + inline string& ci:: + simulate () + { + return this->simulate_; + } + + inline void ci:: + simulate (const string& x) + { + this->simulate_ = x; + } + + inline bool ci:: + simulate_specified () const + { + return this->simulate_specified_; + } + + inline void ci:: + simulate_specified (bool x) + { + this->simulate_specified_ = x; + } + } +} + +// Begin epilogue. +// +// +// End epilogue. diff --git a/monitor/.gitignore b/monitor/.gitignore index 21c0e0b..edfeac2 100644 --- a/monitor/.gitignore +++ b/monitor/.gitignore @@ -1,2 +1,2 @@ -*-options.?xx -brep-monitor +/brep-monitor +/*-options.?xx diff --git a/monitor/buildfile b/monitor/buildfile index dc49a98..1ee7d26 100644 --- a/monitor/buildfile +++ b/monitor/buildfile @@ -10,13 +10,78 @@ include ../libbrep/ include ../mod/ exe{brep-monitor}: {hxx ixx cxx}{* -*-options} \ - {hxx ixx cxx}{monitor-options module-options} \ ../mod/libue{mod} ../libbrep/lib{brep} $libs -# Build options. +## Consumption build ($develop == false). +# + +# Use pregenerated versions in the consumption build. +# +exe{brep-monitor}: pregenerated/{hxx ixx cxx}{**}: include = (!$develop) + +if! $develop + cxx.poptions =+ "-I($src_base/pregenerated)" + +# Distribute pregenerated versions only in the consumption build. +# +pregenerated/{hxx ixx cxx}{*}: dist = (!$develop) + +# +## + +## Development build ($develop == true). +# + +exe{brep-monitor}: {hxx ixx cxx}{monitor-options module-options}: \ + include = $develop + +if $develop + import! [metadata] cli = cli%exe{cli} + +# In the development build distribute regenerated {hxx ixx cxx}{*-options}, +# remapping their locations to the paths of the pregenerated versions (which +# are only distributed in the consumption build; see above). This way we make +# sure that the distributed files are always up-to-date. +# +# @@ TODO Make it an ad-hoc rule, but note that we need to add some options +# specific for monitor.cli and module.cli (see +# https://build2.org/release/0.14.0.xhtml#adhoc-rules). +# +<{hxx ixx cxx}{module-options}>: cli{module} $cli +{ + # Set option prefix to the empty value to handle all unknown request + # parameters uniformly with a single catch block. + # + options = --std c++11 -I $src_root --include-with-brackets \ + --include-prefix monitor --guard-prefix MONITOR \ + --generate-specifier --cli-namespace brep::cli \ + --output-suffix "-options" +} +% +if $develop +{{ + diag cli ($<[0]) + ($<[1]) $options -o $out_base/ $path($<[0]) + + if diff $src_base/pregenerated/monitor/module-options.hxx $path($>[0]) >- && \ + diff $src_base/pregenerated/monitor/module-options.ixx $path($>[1]) >- && \ + diff $src_base/pregenerated/monitor/module-options.cxx $path($>[2]) >- + exit + end + + cp $path($>[0]) $src_base/pregenerated/monitor/module-options.hxx + cp $path($>[1]) $src_base/pregenerated/monitor/module-options.ixx + cp $path($>[2]) $src_base/pregenerated/monitor/module-options.cxx +}} + +# +## + +# Pass the copyright notice extracted from the LICENSE file. # obj{monitor}: cxx.poptions += -DBREP_COPYRIGHT=\"$copyright\" +#\ # Generated options parser. # if $cli.configured @@ -43,3 +108,4 @@ if $cli.configured clean = ($src_root != $out_root) } } +#\ diff --git a/monitor/pregenerated/monitor/module-options.cxx b/monitor/pregenerated/monitor/module-options.cxx new file mode 100644 index 0000000..ec4c752 --- /dev/null +++ b/monitor/pregenerated/monitor/module-options.cxx @@ -0,0 +1,495 @@ +// -*- C++ -*- +// +// This file was generated by CLI, a command line interface +// compiler for C++. +// + +// Begin prologue. +// +// +// End prologue. + +#include <monitor/module-options.hxx> + +#include <map> +#include <set> +#include <string> +#include <vector> +#include <utility> +#include <ostream> +#include <sstream> +#include <cstring> + +namespace brep +{ + namespace cli + { + template <typename X> + struct parser + { + static void + parse (X& x, bool& xs, scanner& s) + { + using namespace std; + + const char* o (s.next ()); + if (s.more ()) + { + string v (s.next ()); + istringstream is (v); + if (!(is >> x && is.peek () == istringstream::traits_type::eof ())) + throw invalid_value (o, v); + } + else + throw missing_value (o); + + xs = true; + } + }; + + template <> + struct parser<bool> + { + static void + parse (bool& x, bool& xs, scanner& s) + { + const char* o (s.next ()); + + if (s.more ()) + { + const char* v (s.next ()); + + if (std::strcmp (v, "1") == 0 || + std::strcmp (v, "true") == 0 || + std::strcmp (v, "TRUE") == 0 || + std::strcmp (v, "True") == 0) + x = true; + else if (std::strcmp (v, "0") == 0 || + std::strcmp (v, "false") == 0 || + std::strcmp (v, "FALSE") == 0 || + std::strcmp (v, "False") == 0) + x = false; + else + throw invalid_value (o, v); + } + else + throw missing_value (o); + + xs = true; + } + }; + + template <> + struct parser<std::string> + { + static void + parse (std::string& x, bool& xs, scanner& s) + { + const char* o (s.next ()); + + if (s.more ()) + x = s.next (); + else + throw missing_value (o); + + xs = true; + } + }; + + template <typename X> + struct parser<std::pair<X, std::size_t> > + { + static void + parse (std::pair<X, std::size_t>& x, bool& xs, scanner& s) + { + x.second = s.position (); + parser<X>::parse (x.first, xs, s); + } + }; + + template <typename X> + struct parser<std::vector<X> > + { + static void + parse (std::vector<X>& c, bool& xs, scanner& s) + { + X x; + bool dummy; + parser<X>::parse (x, dummy, s); + c.push_back (x); + xs = true; + } + }; + + template <typename X, typename C> + struct parser<std::set<X, C> > + { + static void + parse (std::set<X, C>& c, bool& xs, scanner& s) + { + X x; + bool dummy; + parser<X>::parse (x, dummy, s); + c.insert (x); + xs = true; + } + }; + + template <typename K, typename V, typename C> + struct parser<std::map<K, V, C> > + { + static void + parse (std::map<K, V, C>& m, bool& xs, scanner& s) + { + const char* o (s.next ()); + + if (s.more ()) + { + std::size_t pos (s.position ()); + std::string ov (s.next ()); + std::string::size_type p = ov.find ('='); + + K k = K (); + V v = V (); + std::string kstr (ov, 0, p); + std::string vstr (ov, (p != std::string::npos ? p + 1 : ov.size ())); + + int ac (2); + char* av[] = + { + const_cast<char*> (o), + 0 + }; + + bool dummy; + if (!kstr.empty ()) + { + av[1] = const_cast<char*> (kstr.c_str ()); + argv_scanner s (0, ac, av, false, pos); + parser<K>::parse (k, dummy, s); + } + + if (!vstr.empty ()) + { + av[1] = const_cast<char*> (vstr.c_str ()); + argv_scanner s (0, ac, av, false, pos); + parser<V>::parse (v, dummy, s); + } + + m[k] = v; + } + else + throw missing_value (o); + + xs = true; + } + }; + + template <typename X, typename T, T X::*M> + void + thunk (X& x, scanner& s) + { + parser<T>::parse (x.*M, s); + } + + template <typename X, bool X::*M> + void + thunk (X& x, scanner& s) + { + s.next (); + x.*M = true; + } + + template <typename X, typename T, T X::*M, bool X::*S> + void + thunk (X& x, scanner& s) + { + parser<T>::parse (x.*M, x.*S, s); + } + } +} + +#include <map> + +namespace brep +{ + namespace options + { + // module + // + + module:: + module () + { + } + + bool module:: + parse (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + bool r = _parse (s, opt, arg); + return r; + } + + bool module:: + parse (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + bool r = _parse (s, opt, arg); + return r; + } + + bool module:: + parse (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (argc, argv, erase); + bool r = _parse (s, opt, arg); + end = s.end (); + return r; + } + + bool module:: + parse (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + bool r = _parse (s, opt, arg); + end = s.end (); + return r; + } + + bool module:: + parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + { + bool r = _parse (s, opt, arg); + return r; + } + + typedef + std::map<std::string, void (*) (module&, ::brep::cli::scanner&)> + _cli_module_map; + + static _cli_module_map _cli_module_map_; + + struct _cli_module_map_init + { + _cli_module_map_init () + { + } + }; + + static _cli_module_map_init _cli_module_map_init_; + + bool module:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_module_map::const_iterator i (_cli_module_map_.find (o)); + + if (i != _cli_module_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + // build_task base + // + if (::brep::options::build_task::_parse (o, s)) + return true; + + return false; + } + + bool module:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt_mode, + ::brep::cli::unknown_mode arg_mode) + { + // Can't skip combined flags (--no-combined-flags). + // + assert (opt_mode != ::brep::cli::unknown_mode::skip); + + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + + if (std::strncmp (o, "-", 1) == 0 && o[1] != '\0') + { + // Handle combined option values. + // + std::string co; + if (const char* v = std::strchr (o, '=')) + { + co.assign (o, 0, v - o); + ++v; + + int ac (2); + char* av[] = + { + const_cast<char*> (co.c_str ()), + const_cast<char*> (v) + }; + + ::brep::cli::argv_scanner ns (0, ac, av); + + if (_parse (co.c_str (), ns)) + { + // Parsed the option but not its value? + // + if (ns.end () != 2) + throw ::brep::cli::invalid_value (co, v); + + s.next (); + r = true; + continue; + } + else + { + // Set the unknown option and fall through. + // + o = co.c_str (); + } + } + + // Handle combined flags. + // + char cf[3]; + { + const char* p = o + 1; + for (; *p != '\0'; ++p) + { + if (!((*p >= 'a' && *p <= 'z') || + (*p >= 'A' && *p <= 'Z') || + (*p >= '0' && *p <= '9'))) + break; + } + + if (*p == '\0') + { + for (p = o + 1; *p != '\0'; ++p) + { + std::strcpy (cf, "-"); + cf[1] = *p; + cf[2] = '\0'; + + int ac (1); + char* av[] = + { + cf + }; + + ::brep::cli::argv_scanner ns (0, ac, av); + + if (!_parse (cf, ns)) + break; + } + + if (*p == '\0') + { + // All handled. + // + s.next (); + r = true; + continue; + } + else + { + // Set the unknown option and fall through. + // + o = cf; + } + } + } + + switch (opt_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_option (o); + } + } + + break; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + } +} + +// Begin epilogue. +// +// +// End epilogue. + diff --git a/monitor/pregenerated/monitor/module-options.hxx b/monitor/pregenerated/monitor/module-options.hxx new file mode 100644 index 0000000..d4eaf16 --- /dev/null +++ b/monitor/pregenerated/monitor/module-options.hxx @@ -0,0 +1,91 @@ +// -*- C++ -*- +// +// This file was generated by CLI, a command line interface +// compiler for C++. +// + +#ifndef MONITOR_MODULE_OPTIONS_HXX +#define MONITOR_MODULE_OPTIONS_HXX + +// Begin prologue. +// +// +// End prologue. + +#include <mod/module-options.hxx> + +namespace brep +{ + namespace options + { + class module: public ::brep::options::build_task + { + public: + module (); + + // Return true if anything has been parsed. + // + bool + parse (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + bool + parse (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + bool + parse (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + bool + parse (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + bool + parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors. + // + // Implementation details. + // + protected: + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + }; + } +} + +#include <monitor/module-options.ixx> + +// Begin epilogue. +// +// +// End epilogue. + +#endif // MONITOR_MODULE_OPTIONS_HXX diff --git a/monitor/pregenerated/monitor/module-options.ixx b/monitor/pregenerated/monitor/module-options.ixx new file mode 100644 index 0000000..e456fc4 --- /dev/null +++ b/monitor/pregenerated/monitor/module-options.ixx @@ -0,0 +1,24 @@ +// -*- C++ -*- +// +// This file was generated by CLI, a command line interface +// compiler for C++. +// + +// Begin prologue. +// +// +// End prologue. + +namespace brep +{ + namespace options + { + // module + // + } +} + +// Begin epilogue. +// +// +// End epilogue. diff --git a/monitor/pregenerated/monitor/monitor-options.cxx b/monitor/pregenerated/monitor/monitor-options.cxx new file mode 100644 index 0000000..26e387a --- /dev/null +++ b/monitor/pregenerated/monitor/monitor-options.cxx @@ -0,0 +1,863 @@ +// -*- C++ -*- +// +// This file was generated by CLI, a command line interface +// compiler for C++. +// + +// Begin prologue. +// +// +// End prologue. + +#include <monitor/monitor-options.hxx> + +#include <map> +#include <set> +#include <string> +#include <vector> +#include <utility> +#include <ostream> +#include <sstream> +#include <cstring> + +namespace brep +{ + namespace cli + { + template <typename X> + struct parser + { + static void + parse (X& x, bool& xs, scanner& s) + { + using namespace std; + + const char* o (s.next ()); + if (s.more ()) + { + string v (s.next ()); + istringstream is (v); + if (!(is >> x && is.peek () == istringstream::traits_type::eof ())) + throw invalid_value (o, v); + } + else + throw missing_value (o); + + xs = true; + } + }; + + template <> + struct parser<bool> + { + static void + parse (bool& x, bool& xs, scanner& s) + { + const char* o (s.next ()); + + if (s.more ()) + { + const char* v (s.next ()); + + if (std::strcmp (v, "1") == 0 || + std::strcmp (v, "true") == 0 || + std::strcmp (v, "TRUE") == 0 || + std::strcmp (v, "True") == 0) + x = true; + else if (std::strcmp (v, "0") == 0 || + std::strcmp (v, "false") == 0 || + std::strcmp (v, "FALSE") == 0 || + std::strcmp (v, "False") == 0) + x = false; + else + throw invalid_value (o, v); + } + else + throw missing_value (o); + + xs = true; + } + }; + + template <> + struct parser<std::string> + { + static void + parse (std::string& x, bool& xs, scanner& s) + { + const char* o (s.next ()); + + if (s.more ()) + x = s.next (); + else + throw missing_value (o); + + xs = true; + } + }; + + template <typename X> + struct parser<std::pair<X, std::size_t> > + { + static void + parse (std::pair<X, std::size_t>& x, bool& xs, scanner& s) + { + x.second = s.position (); + parser<X>::parse (x.first, xs, s); + } + }; + + template <typename X> + struct parser<std::vector<X> > + { + static void + parse (std::vector<X>& c, bool& xs, scanner& s) + { + X x; + bool dummy; + parser<X>::parse (x, dummy, s); + c.push_back (x); + xs = true; + } + }; + + template <typename X, typename C> + struct parser<std::set<X, C> > + { + static void + parse (std::set<X, C>& c, bool& xs, scanner& s) + { + X x; + bool dummy; + parser<X>::parse (x, dummy, s); + c.insert (x); + xs = true; + } + }; + + template <typename K, typename V, typename C> + struct parser<std::map<K, V, C> > + { + static void + parse (std::map<K, V, C>& m, bool& xs, scanner& s) + { + const char* o (s.next ()); + + if (s.more ()) + { + std::size_t pos (s.position ()); + std::string ov (s.next ()); + std::string::size_type p = ov.find ('='); + + K k = K (); + V v = V (); + std::string kstr (ov, 0, p); + std::string vstr (ov, (p != std::string::npos ? p + 1 : ov.size ())); + + int ac (2); + char* av[] = + { + const_cast<char*> (o), + 0 + }; + + bool dummy; + if (!kstr.empty ()) + { + av[1] = const_cast<char*> (kstr.c_str ()); + argv_scanner s (0, ac, av, false, pos); + parser<K>::parse (k, dummy, s); + } + + if (!vstr.empty ()) + { + av[1] = const_cast<char*> (vstr.c_str ()); + argv_scanner s (0, ac, av, false, pos); + parser<V>::parse (v, dummy, s); + } + + m[k] = v; + } + else + throw missing_value (o); + + xs = true; + } + }; + + template <typename X, typename T, T X::*M> + void + thunk (X& x, scanner& s) + { + parser<T>::parse (x.*M, s); + } + + template <typename X, bool X::*M> + void + thunk (X& x, scanner& s) + { + s.next (); + x.*M = true; + } + + template <typename X, typename T, T X::*M, bool X::*S> + void + thunk (X& x, scanner& s) + { + parser<T>::parse (x.*M, x.*S, s); + } + } +} + +#include <map> + +namespace brep +{ + namespace options + { + // monitor + // + + monitor:: + monitor () + : soft_rebuild_timeout_ (), + soft_rebuild_timeout_specified_ (false), + hard_rebuild_timeout_ (), + hard_rebuild_timeout_specified_ (false), + report_timeout_ (), + report_timeout_specified_ (false), + full_report_ (), + clean_ (), + build_db_user_ (), + build_db_user_specified_ (false), + build_db_password_ (), + build_db_password_specified_ (false), + build_db_name_ ("brep_package"), + build_db_name_specified_ (false), + build_db_host_ (), + build_db_host_specified_ (false), + build_db_port_ (), + build_db_port_specified_ (false), + pager_ (), + pager_specified_ (false), + pager_option_ (), + pager_option_specified_ (false), + help_ (), + version_ () + { + } + + monitor:: + monitor (int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : soft_rebuild_timeout_ (), + soft_rebuild_timeout_specified_ (false), + hard_rebuild_timeout_ (), + hard_rebuild_timeout_specified_ (false), + report_timeout_ (), + report_timeout_specified_ (false), + full_report_ (), + clean_ (), + build_db_user_ (), + build_db_user_specified_ (false), + build_db_password_ (), + build_db_password_specified_ (false), + build_db_name_ ("brep_package"), + build_db_name_specified_ (false), + build_db_host_ (), + build_db_host_specified_ (false), + build_db_port_ (), + build_db_port_specified_ (false), + pager_ (), + pager_specified_ (false), + pager_option_ (), + pager_option_specified_ (false), + help_ (), + version_ () + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + } + + monitor:: + monitor (int start, + int& argc, + char** argv, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : soft_rebuild_timeout_ (), + soft_rebuild_timeout_specified_ (false), + hard_rebuild_timeout_ (), + hard_rebuild_timeout_specified_ (false), + report_timeout_ (), + report_timeout_specified_ (false), + full_report_ (), + clean_ (), + build_db_user_ (), + build_db_user_specified_ (false), + build_db_password_ (), + build_db_password_specified_ (false), + build_db_name_ ("brep_package"), + build_db_name_specified_ (false), + build_db_host_ (), + build_db_host_specified_ (false), + build_db_port_ (), + build_db_port_specified_ (false), + pager_ (), + pager_specified_ (false), + pager_option_ (), + pager_option_specified_ (false), + help_ (), + version_ () + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + } + + monitor:: + monitor (int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : soft_rebuild_timeout_ (), + soft_rebuild_timeout_specified_ (false), + hard_rebuild_timeout_ (), + hard_rebuild_timeout_specified_ (false), + report_timeout_ (), + report_timeout_specified_ (false), + full_report_ (), + clean_ (), + build_db_user_ (), + build_db_user_specified_ (false), + build_db_password_ (), + build_db_password_specified_ (false), + build_db_name_ ("brep_package"), + build_db_name_specified_ (false), + build_db_host_ (), + build_db_host_specified_ (false), + build_db_port_ (), + build_db_port_specified_ (false), + pager_ (), + pager_specified_ (false), + pager_option_ (), + pager_option_specified_ (false), + help_ (), + version_ () + { + ::brep::cli::argv_scanner s (argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + monitor:: + monitor (int start, + int& argc, + char** argv, + int& end, + bool erase, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : soft_rebuild_timeout_ (), + soft_rebuild_timeout_specified_ (false), + hard_rebuild_timeout_ (), + hard_rebuild_timeout_specified_ (false), + report_timeout_ (), + report_timeout_specified_ (false), + full_report_ (), + clean_ (), + build_db_user_ (), + build_db_user_specified_ (false), + build_db_password_ (), + build_db_password_specified_ (false), + build_db_name_ ("brep_package"), + build_db_name_specified_ (false), + build_db_host_ (), + build_db_host_specified_ (false), + build_db_port_ (), + build_db_port_specified_ (false), + pager_ (), + pager_specified_ (false), + pager_option_ (), + pager_option_specified_ (false), + help_ (), + version_ () + { + ::brep::cli::argv_scanner s (start, argc, argv, erase); + _parse (s, opt, arg); + end = s.end (); + } + + monitor:: + monitor (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt, + ::brep::cli::unknown_mode arg) + : soft_rebuild_timeout_ (), + soft_rebuild_timeout_specified_ (false), + hard_rebuild_timeout_ (), + hard_rebuild_timeout_specified_ (false), + report_timeout_ (), + report_timeout_specified_ (false), + full_report_ (), + clean_ (), + build_db_user_ (), + build_db_user_specified_ (false), + build_db_password_ (), + build_db_password_specified_ (false), + build_db_name_ ("brep_package"), + build_db_name_specified_ (false), + build_db_host_ (), + build_db_host_specified_ (false), + build_db_port_ (), + build_db_port_specified_ (false), + pager_ (), + pager_specified_ (false), + pager_option_ (), + pager_option_specified_ (false), + help_ (), + version_ () + { + _parse (s, opt, arg); + } + + ::brep::cli::usage_para monitor:: + print_usage (::std::ostream& os, ::brep::cli::usage_para p) + { + CLI_POTENTIALLY_UNUSED (os); + + if (p != ::brep::cli::usage_para::none) + os << ::std::endl; + + os << "\033[1mOPTIONS\033[0m" << ::std::endl; + + os << std::endl + << "\033[1m--soft-rebuild-timeout\033[0m \033[4mseconds\033[0m Time to wait (in seconds) before considering a" << ::std::endl + << " package soft (re)build as delayed. If" << ::std::endl + << " unspecified, it is the sum of the package" << ::std::endl + << " rebuild timeout (soft rebuild timeout if the" << ::std::endl + << " alternative timeout is unspecified and the" << ::std::endl + << " maximum of two otherwise) and the build result" << ::std::endl + << " timeout (see the \033[1mbuild-soft-rebuild-timeout\033[0m," << ::std::endl + << " \033[1mbuild-alt-soft-rebuild-*\033[0m, and" << ::std::endl + << " \033[1mbuild-result-timeout\033[0m \033[1mbrep\033[0m module configuration" << ::std::endl + << " options for details). The special zero value" << ::std::endl + << " disables monitoring of soft rebuilds." << ::std::endl + << ::std::endl + << " Note that if both soft and hard rebuilds are" << ::std::endl + << " disabled in the \033[1mbrep\033[0m module configuration, then" << ::std::endl + << " \033[1mbrep-monitor\033[0m is unable to come up with a" << ::std::endl + << " reasonable build timeout on its own. In this" << ::std::endl + << " case, to monitor the initial package build" << ::std::endl + << " delays, you may need to specify either" << ::std::endl + << " \033[1m--soft-rebuild-timeout\033[0m or" << ::std::endl + << " \033[1m--hard-rebuild-timeout\033[0m explicitly." << ::std::endl + << ::std::endl + << " Also note that a package that was not built" << ::std::endl + << " before it was archived is always considered as" << ::std::endl + << " delayed. However, to distinguish this case from" << ::std::endl + << " a situation where a package was archived before" << ::std::endl + << " a configuration have been added, \033[1mbrep-monitor\033[0m" << ::std::endl + << " needs to observe the package as buildable for" << ::std::endl + << " this configuration before it is archived. As" << ::std::endl + << " result, if you run \033[1mbrep-monitor\033[0m periodically" << ::std::endl + << " (for example, as a cron job), then make sure its" << ::std::endl + << " running period is less than the tenant archive" << ::std::endl + << " timeout." << ::std::endl; + + os << std::endl + << "\033[1m--hard-rebuild-timeout\033[0m \033[4mseconds\033[0m Time to wait (in seconds) before considering a" << ::std::endl + << " package hard (re)build as delayed. If" << ::std::endl + << " unspecified, it is calculated in the same way as" << ::std::endl + << " for \033[1m--soft-rebuild-timeout\033[0m but using the" << ::std::endl + << " \033[1mbuild-hard-rebuild-timeout\033[0m and" << ::std::endl + << " \033[1mbuild-alt-hard-rebuild-*\033[0m \033[1mbrep\033[0m module" << ::std::endl + << " configuration options." << ::std::endl; + + os << std::endl + << "\033[1m--report-timeout\033[0m \033[4mseconds\033[0m Time to wait (in seconds) before repeating a" << ::std::endl + << " report of a package build delay. By default" << ::std::endl + << " there is no timeout and all reports are" << ::std::endl + << " repeated." << ::std::endl; + + os << std::endl + << "\033[1m--full-report\033[0m Print the list of delayed package builds rather" << ::std::endl + << " than just their number per build configuration." << ::std::endl; + + os << std::endl + << "\033[1m--clean\033[0m Additionally clean the monitor state removing" << ::std::endl + << " outdated information related to non-existent" << ::std::endl + << " packages, configurations, etc." << ::std::endl; + + os << std::endl + << "\033[1m--build-db-user\033[0m|\033[1m-u\033[0m \033[4muser\033[0m \033[1mbuild\033[0m database user name. If unspecified, then" << ::std::endl + << " operating system (login) name is used." << ::std::endl; + + os << std::endl + << "\033[1m--build-db-password\033[0m \033[4mpass\033[0m \033[1mbuild\033[0m database password. If unspecified, then" << ::std::endl + << " login without password is expected to work." << ::std::endl; + + os << std::endl + << "\033[1m--build-db-name\033[0m|\033[1m-n\033[0m \033[4mname\033[0m \033[1mbuild\033[0m database name. If unspecified, then \033[1mbrep\033[0m's" << ::std::endl + << " \033[1mbuild-db-name\033[0m configuration option value is" << ::std::endl + << " used." << ::std::endl; + + os << std::endl + << "\033[1m--build-db-host\033[0m|\033[1m-h\033[0m \033[4mhost\033[0m \033[1mbuild\033[0m database host name, address, or socket. If" << ::std::endl + << " unspecified, then \033[1mbrep\033[0m's \033[1mbuild-db-host\033[0m" << ::std::endl + << " configuration option value is used." << ::std::endl; + + os << std::endl + << "\033[1m--build-db-port\033[0m|\033[1m-p\033[0m \033[4mport\033[0m \033[1mbuild\033[0m database port number. If unspecified, then" << ::std::endl + << " \033[1mbrep\033[0m's \033[1mbuild-db-port\033[0m configuration option value" << ::std::endl + << " is used." << ::std::endl; + + os << std::endl + << "\033[1m--pager\033[0m \033[4mpath\033[0m The pager program to be used to show long text." << ::std::endl + << " Commonly used pager programs are \033[1mless\033[0m and \033[1mmore\033[0m." << ::std::endl + << " You can also specify additional options that" << ::std::endl + << " should be passed to the pager program with" << ::std::endl + << " \033[1m--pager-option\033[0m. If an empty string is specified" << ::std::endl + << " as the pager program, then no pager will be" << ::std::endl + << " used. If the pager program is not explicitly" << ::std::endl + << " specified, then \033[1mbrep-monitor\033[0m will try to use" << ::std::endl + << " \033[1mless\033[0m. If it is not available, then no pager will" << ::std::endl + << " be used." << ::std::endl; + + os << std::endl + << "\033[1m--pager-option\033[0m \033[4mopt\033[0m Additional option to be passed to the pager" << ::std::endl + << " program. See \033[1m--pager\033[0m for more information on the" << ::std::endl + << " pager program. Repeat this option to specify" << ::std::endl + << " multiple pager options." << ::std::endl; + + os << std::endl + << "\033[1m--help\033[0m Print usage information and exit." << ::std::endl; + + os << std::endl + << "\033[1m--version\033[0m Print version and exit." << ::std::endl; + + p = ::brep::cli::usage_para::option; + + return p; + } + + typedef + std::map<std::string, void (*) (monitor&, ::brep::cli::scanner&)> + _cli_monitor_map; + + static _cli_monitor_map _cli_monitor_map_; + + struct _cli_monitor_map_init + { + _cli_monitor_map_init () + { + _cli_monitor_map_["--soft-rebuild-timeout"] = + &::brep::cli::thunk< monitor, std::size_t, &monitor::soft_rebuild_timeout_, + &monitor::soft_rebuild_timeout_specified_ >; + _cli_monitor_map_["--hard-rebuild-timeout"] = + &::brep::cli::thunk< monitor, std::size_t, &monitor::hard_rebuild_timeout_, + &monitor::hard_rebuild_timeout_specified_ >; + _cli_monitor_map_["--report-timeout"] = + &::brep::cli::thunk< monitor, std::size_t, &monitor::report_timeout_, + &monitor::report_timeout_specified_ >; + _cli_monitor_map_["--full-report"] = + &::brep::cli::thunk< monitor, &monitor::full_report_ >; + _cli_monitor_map_["--clean"] = + &::brep::cli::thunk< monitor, &monitor::clean_ >; + _cli_monitor_map_["--build-db-user"] = + &::brep::cli::thunk< monitor, std::string, &monitor::build_db_user_, + &monitor::build_db_user_specified_ >; + _cli_monitor_map_["-u"] = + &::brep::cli::thunk< monitor, std::string, &monitor::build_db_user_, + &monitor::build_db_user_specified_ >; + _cli_monitor_map_["--build-db-password"] = + &::brep::cli::thunk< monitor, std::string, &monitor::build_db_password_, + &monitor::build_db_password_specified_ >; + _cli_monitor_map_["--build-db-name"] = + &::brep::cli::thunk< monitor, std::string, &monitor::build_db_name_, + &monitor::build_db_name_specified_ >; + _cli_monitor_map_["-n"] = + &::brep::cli::thunk< monitor, std::string, &monitor::build_db_name_, + &monitor::build_db_name_specified_ >; + _cli_monitor_map_["--build-db-host"] = + &::brep::cli::thunk< monitor, std::string, &monitor::build_db_host_, + &monitor::build_db_host_specified_ >; + _cli_monitor_map_["-h"] = + &::brep::cli::thunk< monitor, std::string, &monitor::build_db_host_, + &monitor::build_db_host_specified_ >; + _cli_monitor_map_["--build-db-port"] = + &::brep::cli::thunk< monitor, std::uint16_t, &monitor::build_db_port_, + &monitor::build_db_port_specified_ >; + _cli_monitor_map_["-p"] = + &::brep::cli::thunk< monitor, std::uint16_t, &monitor::build_db_port_, + &monitor::build_db_port_specified_ >; + _cli_monitor_map_["--pager"] = + &::brep::cli::thunk< monitor, std::string, &monitor::pager_, + &monitor::pager_specified_ >; + _cli_monitor_map_["--pager-option"] = + &::brep::cli::thunk< monitor, std::vector<std::string>, &monitor::pager_option_, + &monitor::pager_option_specified_ >; + _cli_monitor_map_["--help"] = + &::brep::cli::thunk< monitor, &monitor::help_ >; + _cli_monitor_map_["--version"] = + &::brep::cli::thunk< monitor, &monitor::version_ >; + } + }; + + static _cli_monitor_map_init _cli_monitor_map_init_; + + bool monitor:: + _parse (const char* o, ::brep::cli::scanner& s) + { + _cli_monitor_map::const_iterator i (_cli_monitor_map_.find (o)); + + if (i != _cli_monitor_map_.end ()) + { + (*(i->second)) (*this, s); + return true; + } + + return false; + } + + bool monitor:: + _parse (::brep::cli::scanner& s, + ::brep::cli::unknown_mode opt_mode, + ::brep::cli::unknown_mode arg_mode) + { + // Can't skip combined flags (--no-combined-flags). + // + assert (opt_mode != ::brep::cli::unknown_mode::skip); + + bool r = false; + bool opt = true; + + while (s.more ()) + { + const char* o = s.peek (); + + if (std::strcmp (o, "--") == 0) + { + opt = false; + s.skip (); + r = true; + continue; + } + + if (opt) + { + if (_parse (o, s)) + { + r = true; + continue; + } + + if (std::strncmp (o, "-", 1) == 0 && o[1] != '\0') + { + // Handle combined option values. + // + std::string co; + if (const char* v = std::strchr (o, '=')) + { + co.assign (o, 0, v - o); + ++v; + + int ac (2); + char* av[] = + { + const_cast<char*> (co.c_str ()), + const_cast<char*> (v) + }; + + ::brep::cli::argv_scanner ns (0, ac, av); + + if (_parse (co.c_str (), ns)) + { + // Parsed the option but not its value? + // + if (ns.end () != 2) + throw ::brep::cli::invalid_value (co, v); + + s.next (); + r = true; + continue; + } + else + { + // Set the unknown option and fall through. + // + o = co.c_str (); + } + } + + // Handle combined flags. + // + char cf[3]; + { + const char* p = o + 1; + for (; *p != '\0'; ++p) + { + if (!((*p >= 'a' && *p <= 'z') || + (*p >= 'A' && *p <= 'Z') || + (*p >= '0' && *p <= '9'))) + break; + } + + if (*p == '\0') + { + for (p = o + 1; *p != '\0'; ++p) + { + std::strcpy (cf, "-"); + cf[1] = *p; + cf[2] = '\0'; + + int ac (1); + char* av[] = + { + cf + }; + + ::brep::cli::argv_scanner ns (0, ac, av); + + if (!_parse (cf, ns)) + break; + } + + if (*p == '\0') + { + // All handled. + // + s.next (); + r = true; + continue; + } + else + { + // Set the unknown option and fall through. + // + o = cf; + } + } + } + + switch (opt_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_option (o); + } + } + + break; + } + } + + switch (arg_mode) + { + case ::brep::cli::unknown_mode::skip: + { + s.skip (); + r = true; + continue; + } + case ::brep::cli::unknown_mode::stop: + { + break; + } + case ::brep::cli::unknown_mode::fail: + { + throw ::brep::cli::unknown_argument (o); + } + } + + break; + } + + return r; + } + } +} + +::brep::cli::usage_para +print_usage (::std::ostream& os, ::brep::cli::usage_para p) +{ + CLI_POTENTIALLY_UNUSED (os); + + if (p != ::brep::cli::usage_para::none) + os << ::std::endl; + + os << "\033[1mSYNOPSIS\033[0m" << ::std::endl + << ::std::endl + << "\033[1mbrep-monitor --help\033[0m" << ::std::endl + << "\033[1mbrep-monitor --version\033[0m" << ::std::endl + << "\033[1mbrep-monitor\033[0m [\033[4moptions\033[0m] \033[4mbrep-config\033[0m \033[4mtoolchain\033[0m [\033[4mtoolchain\033[0m...]\033[0m" << ::std::endl + << ::std::endl + << "\033[4mtoolchain\033[0m = \033[4mname\033[0m[\033[1m/\033[0m\033[4mversion\033[0m]\033[0m" << ::std::endl + << ::std::endl + << "\033[1mDESCRIPTION\033[0m" << ::std::endl + << ::std::endl + << "\033[1mbrep-monitor\033[0m analyzes the \033[1mbrep\033[0m internal state and reports the infrastructure" << ::std::endl + << "issues printing their descriptions to \033[1mstderr\033[0m." << ::std::endl + << ::std::endl + << "The specified \033[1mbrep\033[0m module configuration file (\033[4mbrep-config\033[0m) is used to retrieve" << ::std::endl + << "information required to access the databases and deduce the expected behavior." << ::std::endl + << "Most of this information can be overridden via the command line options." << ::std::endl + << ::std::endl + << "Currently, only delayed package builds for the specified toolchains are" << ::std::endl + << "reported. If toolchain version is omitted then all package builds with this" << ::std::endl + << "toolchain name are considered." << ::std::endl + << ::std::endl + << "\033[1mbrep-monitor\033[0m maintains its own state in the brep \033[1mbuild\033[0m database. In particular," << ::std::endl + << "it records timestamps of the reported package build delays and optionally omits" << ::std::endl + << "them from being reported again during the timeout specified with the" << ::std::endl + << "\033[1m--report-timeout\033[0m option. If the timeout is unspecified, then the report" << ::std::endl + << "timestamps are not updated. To report all delays and still update the" << ::std::endl + << "timestamps specify the zero report timeout." << ::std::endl + << ::std::endl + << "By default, a brief report is printed. Use the \033[1m--full-report\033[0m option to obtain" << ::std::endl + << "the full report (which may be large)." << ::std::endl + << ::std::endl + << "Note that \033[1mbrep-monitor\033[0m expects the \033[1mbuild\033[0m database schema to have already been" << ::std::endl + << "created using \033[1mbrep-migrate(1)\033[0m." << ::std::endl; + + p = ::brep::options::monitor::print_usage (os, ::brep::cli::usage_para::text); + + if (p != ::brep::cli::usage_para::none) + os << ::std::endl; + + os << "\033[1mEXIT STATUS\033[0m" << ::std::endl + << ::std::endl + << "\033[1m0\033[0m" << ::std::endl + << " Success." << ::std::endl + << "\033[1m1\033[0m" << ::std::endl + << " Fatal error." << ::std::endl + << "\033[1m2\033[0m" << ::std::endl + << " An instance of \033[1mbrep-monitor\033[0m or some other \033[1mbrep\033[0m utility is already running." << ::std::endl + << " Try again." << ::std::endl + << "\033[1m3\033[0m" << ::std::endl + << " Recoverable database error. Try again." << ::std::endl; + + p = ::brep::cli::usage_para::text; + + return p; +} + +// Begin epilogue. +// +// +// End epilogue. + diff --git a/monitor/pregenerated/monitor/monitor-options.hxx b/monitor/pregenerated/monitor/monitor-options.hxx new file mode 100644 index 0000000..ac0e89e --- /dev/null +++ b/monitor/pregenerated/monitor/monitor-options.hxx @@ -0,0 +1,200 @@ +// -*- C++ -*- +// +// This file was generated by CLI, a command line interface +// compiler for C++. +// + +#ifndef MONITOR_MONITOR_OPTIONS_HXX +#define MONITOR_MONITOR_OPTIONS_HXX + +// Begin prologue. +// +// +// End prologue. + +#include <vector> + +#include <string> + +#include <cstddef> + +#include <cstdint> + +#include <mod/module-options.hxx> + +namespace brep +{ + namespace options + { + class monitor + { + public: + monitor (); + + monitor (int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + monitor (int start, + int& argc, + char** argv, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + monitor (int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + monitor (int start, + int& argc, + char** argv, + int& end, + bool erase = false, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + monitor (::brep::cli::scanner&, + ::brep::cli::unknown_mode option = ::brep::cli::unknown_mode::fail, + ::brep::cli::unknown_mode argument = ::brep::cli::unknown_mode::stop); + + // Option accessors. + // + const std::size_t& + soft_rebuild_timeout () const; + + bool + soft_rebuild_timeout_specified () const; + + const std::size_t& + hard_rebuild_timeout () const; + + bool + hard_rebuild_timeout_specified () const; + + const std::size_t& + report_timeout () const; + + bool + report_timeout_specified () const; + + const bool& + full_report () const; + + const bool& + clean () const; + + const std::string& + build_db_user () const; + + bool + build_db_user_specified () const; + + const std::string& + build_db_password () const; + + bool + build_db_password_specified () const; + + const std::string& + build_db_name () const; + + bool + build_db_name_specified () const; + + const std::string& + build_db_host () const; + + bool + build_db_host_specified () const; + + const std::uint16_t& + build_db_port () const; + + bool + build_db_port_specified () const; + + const std::string& + pager () const; + + bool + pager_specified () const; + + const std::vector<std::string>& + pager_option () const; + + bool + pager_option_specified () const; + + const bool& + help () const; + + const bool& + version () const; + + // Print usage information. + // + static ::brep::cli::usage_para + print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + + // Implementation details. + // + protected: + bool + _parse (const char*, ::brep::cli::scanner&); + + private: + bool + _parse (::brep::cli::scanner&, + ::brep::cli::unknown_mode option, + ::brep::cli::unknown_mode argument); + + public: + std::size_t soft_rebuild_timeout_; + bool soft_rebuild_timeout_specified_; + std::size_t hard_rebuild_timeout_; + bool hard_rebuild_timeout_specified_; + std::size_t report_timeout_; + bool report_timeout_specified_; + bool full_report_; + bool clean_; + std::string build_db_user_; + bool build_db_user_specified_; + std::string build_db_password_; + bool build_db_password_specified_; + std::string build_db_name_; + bool build_db_name_specified_; + std::string build_db_host_; + bool build_db_host_specified_; + std::uint16_t build_db_port_; + bool build_db_port_specified_; + std::string pager_; + bool pager_specified_; + std::vector<std::string> pager_option_; + bool pager_option_specified_; + bool help_; + bool version_; + }; + } +} + +// Print page usage information. +// +::brep::cli::usage_para +print_usage (::std::ostream&, + ::brep::cli::usage_para = ::brep::cli::usage_para::none); + +#include <monitor/monitor-options.ixx> + +// Begin epilogue. +// +// +// End epilogue. + +#endif // MONITOR_MONITOR_OPTIONS_HXX diff --git a/monitor/pregenerated/monitor/monitor-options.ixx b/monitor/pregenerated/monitor/monitor-options.ixx new file mode 100644 index 0000000..c08196a --- /dev/null +++ b/monitor/pregenerated/monitor/monitor-options.ixx @@ -0,0 +1,168 @@ +// -*- C++ -*- +// +// This file was generated by CLI, a command line interface +// compiler for C++. +// + +// Begin prologue. +// +// +// End prologue. + +namespace brep +{ + namespace options + { + // monitor + // + + inline const std::size_t& monitor:: + soft_rebuild_timeout () const + { + return this->soft_rebuild_timeout_; + } + + inline bool monitor:: + soft_rebuild_timeout_specified () const + { + return this->soft_rebuild_timeout_specified_; + } + + inline const std::size_t& monitor:: + hard_rebuild_timeout () const + { + return this->hard_rebuild_timeout_; + } + + inline bool monitor:: + hard_rebuild_timeout_specified () const + { + return this->hard_rebuild_timeout_specified_; + } + + inline const std::size_t& monitor:: + report_timeout () const + { + return this->report_timeout_; + } + + inline bool monitor:: + report_timeout_specified () const + { + return this->report_timeout_specified_; + } + + inline const bool& monitor:: + full_report () const + { + return this->full_report_; + } + + inline const bool& monitor:: + clean () const + { + return this->clean_; + } + + inline const std::string& monitor:: + build_db_user () const + { + return this->build_db_user_; + } + + inline bool monitor:: + build_db_user_specified () const + { + return this->build_db_user_specified_; + } + + inline const std::string& monitor:: + build_db_password () const + { + return this->build_db_password_; + } + + inline bool monitor:: + build_db_password_specified () const + { + return this->build_db_password_specified_; + } + + inline const std::string& monitor:: + build_db_name () const + { + return this->build_db_name_; + } + + inline bool monitor:: + build_db_name_specified () const + { + return this->build_db_name_specified_; + } + + inline const std::string& monitor:: + build_db_host () const + { + return this->build_db_host_; + } + + inline bool monitor:: + build_db_host_specified () const + { + return this->build_db_host_specified_; + } + + inline const std::uint16_t& monitor:: + build_db_port () const + { + return this->build_db_port_; + } + + inline bool monitor:: + build_db_port_specified () const + { + return this->build_db_port_specified_; + } + + inline const std::string& monitor:: + pager () const + { + return this->pager_; + } + + inline bool monitor:: + pager_specified () const + { + return this->pager_specified_; + } + + inline const std::vector<std::string>& monitor:: + pager_option () const + { + return this->pager_option_; + } + + inline bool monitor:: + pager_option_specified () const + { + return this->pager_option_specified_; + } + + inline const bool& monitor:: + help () const + { + return this->help_; + } + + inline const bool& monitor:: + version () const + { + return this->version_; + } + } +} + +// Begin epilogue. +// +// +// End epilogue. diff --git a/repositories.manifest b/repositories.manifest index da9ee2b..8b9b509 100644 --- a/repositories.manifest +++ b/repositories.manifest @@ -1,46 +1,59 @@ : 1 summary: build2 package repository web interface repository -: -role: prerequisite -location: ../libbutl.git##HEAD - -: -role: prerequisite -location: ../libbpkg.git##HEAD - -: -role: prerequisite -location: ../libbbot.git##HEAD - -: -role: prerequisite -location: ../libbutl.bash.git##HEAD - -: -role: prerequisite -location: ../bpkg-util.git##HEAD - -: -role: prerequisite -location: https://git.build2.org/packaging/libapr/libapr1.git##HEAD - -: -role: prerequisite -location: https://git.build2.org/packaging/libapreq/libapreq2.git##HEAD - -: -role: prerequisite -location: https://git.build2.org/packaging/cmark-gfm/cmark-gfm.git##HEAD - -: -role: prerequisite -location: https://git.codesynthesis.com/odb/libodb.git##HEAD - -: -role: prerequisite -location: https://git.codesynthesis.com/odb/libodb-pgsql.git##HEAD - -: -role: prerequisite -location: https://git.codesynthesis.com/libstudxml/libstudxml.git##HEAD +#: +#role: prerequisite +#location: ../libbutl.git##HEAD +# +#: +#role: prerequisite +#location: ../libbpkg.git##HEAD +# +#: +#role: prerequisite +#location: ../libbbot.git##HEAD +# +#: +#role: prerequisite +#location: ../libbutl.bash.git##HEAD +# +#: +#role: prerequisite +#location: ../bpkg-util.git##HEAD +# +#: +#role: prerequisite +#location: https://git.build2.org/packaging/libapr/libapr1.git##HEAD +# +#: +#role: prerequisite +#location: https://git.build2.org/packaging/libapreq/libapreq2.git##HEAD +# +#: +#role: prerequisite +#location: https://git.build2.org/packaging/cmark-gfm/cmark-gfm.git##HEAD +# +#: +#role: prerequisite +#location: https://git.codesynthesis.com/libstudxml/libstudxml.git##HEAD +# +#: +#role: prerequisite +#location: https://git.codesynthesis.com/cli/cli.git##HEAD +# +#: +#role: prerequisite +#location: https://git.codesynthesis.com/odb/libodb.git##HEAD +# +#: +#role: prerequisite +#location: https://git.codesynthesis.com/odb/libodb-pgsql.git##HEAD +# +#: +#role: prerequisite +#location: https://git.codesynthesis.com/odb/odb.git##HEAD + +: +role: prerequisite +location: https://stage.build2.org/1 +trust: EC:50:13:E2:3D:F7:92:B4:50:0B:BF:2A:1F:7D:31:04:C6:57:6F:BC:BE:04:2E:E0:58:14:FA:66:66:21:1F:14 |