aboutsummaryrefslogtreecommitdiff
path: root/bpkg/cfg-create-options.hxx
blob: f47594da85fcf1e6f50550a24e666120995bdaeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
// -*- C++ -*-
//
// This file was generated by CLI, a command line interface
// compiler for C++.
//

#ifndef BPKG_CFG_CREATE_OPTIONS_HXX
#define BPKG_CFG_CREATE_OPTIONS_HXX

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

#include <bpkg/common-options.hxx>

namespace bpkg
{
  class cfg_create_options: public ::bpkg::common_options
  {
    public:
    cfg_create_options ();

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

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

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

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

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

    // Merge options from the specified instance appending/overriding
    // them as if they appeared after options in this instance.
    //
    void
    merge (const cfg_create_options&);

    // Option accessors.
    //
    const dir_path&
    directory () const;

    bool
    directory_specified () const;

    const bool&
    existing () const;

    const bool&
    wipe () const;

    const dir_path&
    host_config () const;

    bool
    host_config_specified () const;

    const bool&
    no_host_config () const;

    const dir_path&
    build2_config () const;

    bool
    build2_config_specified () const;

    const bool&
    no_build2_config () const;

    const string&
    name () const;

    bool
    name_specified () const;

    const string&
    type () const;

    bool
    type_specified () const;

    const uuid_type&
    uuid () const;

    bool
    uuid_specified () const;

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

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

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

    public:
    dir_path directory_;
    bool directory_specified_;
    bool existing_;
    bool wipe_;
    dir_path host_config_;
    bool host_config_specified_;
    bool no_host_config_;
    dir_path build2_config_;
    bool build2_config_specified_;
    bool no_build2_config_;
    string name_;
    bool name_specified_;
    string type_;
    bool type_specified_;
    uuid_type uuid_;
    bool uuid_specified_;
  };
}

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

#include <bpkg/cfg-create-options.ixx>

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

#endif // BPKG_CFG_CREATE_OPTIONS_HXX