23
23
namespace mo = mir::options;
28
boost::program_options::options_description desc,
29
mo::ProgramOption& options,
33
namespace po = boost::program_options;
38
("help,h", "this help text");
40
options.parse_arguments(desc, argc, argv);
42
if (options.is_set("help"))
44
std::ostringstream help_text;
46
BOOST_THROW_EXCEPTION(mir::AbnormalExit(help_text.str()));
49
catch (po::error const& error)
51
std::ostringstream help_text;
52
help_text << "Failed to parse command line options: " << error.what() << "." << std::endl << desc;
53
BOOST_THROW_EXCEPTION(mir::AbnormalExit(help_text.str()));
57
void parse_environment(
58
boost::program_options::options_description& desc,
59
mo::ProgramOption& options)
61
// If MIR_SERVER_HOST_SOCKET is unset, we want to substitute the value of
62
// MIR_SOCKET. Do this now, because MIR_SOCKET will get overwritten later.
63
auto host_socket = getenv("MIR_SERVER_HOST_SOCKET");
64
auto mir_socket = getenv("MIR_SOCKET");
65
if (!host_socket && mir_socket)
66
setenv("MIR_SERVER_HOST_SOCKET", mir_socket, 1);
68
options.parse_environment(desc, "MIR_SERVER_");
72
25
char const* const mo::server_socket_opt = "file,f";
73
26
char const* const mo::no_server_socket_opt = "no-file";
74
27
char const* const mo::enable_input_opt = "enable-input,i";
177
130
return program_options->add_options();
180
void mo::DefaultConfiguration::parse_options(boost::program_options::options_description& options_description, ProgramOption& options) const
182
parse_arguments(options_description, options, argc, argv);
183
parse_environment(options_description, options);
186
133
std::shared_ptr<mo::Option> mo::DefaultConfiguration::the_options() const
190
137
auto options = std::make_shared<ProgramOption>();
191
parse_options(*program_options, *options);
138
parse_arguments(*program_options, *options, argc, argv);
139
parse_environment(*program_options, *options);
140
parse_config_file(*program_options, *options);
192
141
this->options = options;
147
void mo::DefaultConfiguration::parse_arguments(
148
boost::program_options::options_description desc,
149
mo::ProgramOption& options,
151
char const* argv[]) const
153
namespace po = boost::program_options;
158
("help,h", "this help text");
160
options.parse_arguments(desc, argc, argv);
162
if (options.is_set("help"))
164
std::ostringstream help_text;
166
BOOST_THROW_EXCEPTION(mir::AbnormalExit(help_text.str()));
169
catch (po::error const& error)
171
std::ostringstream help_text;
172
help_text << "Failed to parse command line options: " << error.what() << "." << std::endl << desc;
173
BOOST_THROW_EXCEPTION(mir::AbnormalExit(help_text.str()));
177
void mo::DefaultConfiguration::parse_environment(
178
boost::program_options::options_description& desc,
179
mo::ProgramOption& options) const
181
// If MIR_SERVER_HOST_SOCKET is unset, we want to substitute the value of
182
// MIR_SOCKET. Do this now, because MIR_SOCKET will get overwritten later.
183
auto host_socket = getenv("MIR_SERVER_HOST_SOCKET");
184
auto mir_socket = getenv("MIR_SOCKET");
185
if (!host_socket && mir_socket)
186
setenv("MIR_SERVER_HOST_SOCKET", mir_socket, 1);
188
options.parse_environment(desc, "MIR_SERVER_");
191
void mo::DefaultConfiguration::parse_config_file(
192
boost::program_options::options_description& /*desc*/,
193
mo::ProgramOption& /*options*/) const