// -*- C++ -*-
//
// This file was generated by CLI, a command line interface
// compiler for C++.
//

#ifndef BBOT_WORKER_WORKER_OPTIONS_HXX
#define BBOT_WORKER_WORKER_OPTIONS_HXX

// Begin prologue.
//
//
// End prologue.

#include <bbot/common-options.hxx>

namespace bbot
{
  class worker_options
  {
    public:
    worker_options ();

    // Return true if anything has been parsed.
    //
    bool
    parse (int& argc,
           char** argv,
           bool erase = false,
           ::bbot::cli::unknown_mode option = ::bbot::cli::unknown_mode::fail,
           ::bbot::cli::unknown_mode argument = ::bbot::cli::unknown_mode::stop);

    bool
    parse (int start,
           int& argc,
           char** argv,
           bool erase = false,
           ::bbot::cli::unknown_mode option = ::bbot::cli::unknown_mode::fail,
           ::bbot::cli::unknown_mode argument = ::bbot::cli::unknown_mode::stop);

    bool
    parse (int& argc,
           char** argv,
           int& end,
           bool erase = false,
           ::bbot::cli::unknown_mode option = ::bbot::cli::unknown_mode::fail,
           ::bbot::cli::unknown_mode argument = ::bbot::cli::unknown_mode::stop);

    bool
    parse (int start,
           int& argc,
           char** argv,
           int& end,
           bool erase = false,
           ::bbot::cli::unknown_mode option = ::bbot::cli::unknown_mode::fail,
           ::bbot::cli::unknown_mode argument = ::bbot::cli::unknown_mode::stop);

    bool
    parse (::bbot::cli::scanner&,
           ::bbot::cli::unknown_mode option = ::bbot::cli::unknown_mode::fail,
           ::bbot::cli::unknown_mode argument = ::bbot::cli::unknown_mode::stop);

    // Option accessors.
    //
    const bool&
    help () const;

    const bool&
    version () const;

    const uint16_t&
    verbose () const;

    bool
    verbose_specified () const;

    const bool&
    bootstrap () const;

    const bool&
    startup () const;

    const bool&
    systemd_daemon () const;

    const dir_path&
    build () const;

    bool
    build_specified () const;

    const dir_path&
    environments () const;

    bool
    environments_specified () const;

    const path&
    env_script () const;

    bool
    env_script_specified () const;

    const string&
    env_target () const;

    bool
    env_target_specified () const;

    const string&
    tftp_host () const;

    bool
    tftp_host_specified () const;

    // Print usage information.
    //
    static ::bbot::cli::usage_para
    print_usage (::std::ostream&,
                 ::bbot::cli::usage_para = ::bbot::cli::usage_para::none);

    // Implementation details.
    //
    protected:
    bool
    _parse (const char*, ::bbot::cli::scanner&);

    private:
    bool
    _parse (::bbot::cli::scanner&,
            ::bbot::cli::unknown_mode option,
            ::bbot::cli::unknown_mode argument);

    public:
    bool help_;
    bool version_;
    uint16_t verbose_;
    bool verbose_specified_;
    bool bootstrap_;
    bool startup_;
    bool systemd_daemon_;
    dir_path build_;
    bool build_specified_;
    dir_path environments_;
    bool environments_specified_;
    path env_script_;
    bool env_script_specified_;
    string env_target_;
    bool env_target_specified_;
    string tftp_host_;
    bool tftp_host_specified_;
  };
}

// Print page usage information.
//
namespace bbot
{
  ::bbot::cli::usage_para
  print_bbot_worker_usage (::std::ostream&,
                           ::bbot::cli::usage_para = ::bbot::cli::usage_para::none);
}

#include <bbot/worker/worker-options.ixx>

// Begin epilogue.
//
//
// End epilogue.

#endif // BBOT_WORKER_WORKER_OPTIONS_HXX
