| 182 | } |
| 183 | |
| 184 | void application::set_program_options() |
| 185 | { |
| 186 | for(auto& plug : plugins) { |
| 187 | boost::program_options::options_description plugin_cli_opts("Command Line Options for " + plug.second->name()); |
| 188 | boost::program_options::options_description plugin_cfg_opts("Config Options for " + plug.second->name()); |
| 189 | plug.second->set_program_options(plugin_cli_opts, plugin_cfg_opts); |
| 190 | if(plugin_cfg_opts.options().size()) { |
| 191 | my->_app_options.add(plugin_cfg_opts); |
| 192 | my->_cfg_options.add(plugin_cfg_opts); |
| 193 | } |
| 194 | if(plugin_cli_opts.options().size()) |
| 195 | my->_app_options.add(plugin_cli_opts); |
| 196 | } |
| 197 | |
| 198 | options_description app_cfg_opts( "Application Config Options" ); |
| 199 | options_description app_cli_opts( "Application Command Line Options" ); |
| 200 | app_cfg_opts.add_options() |
| 201 | ("plugin", bpo::value< vector<string> >()->composing(), "Plugin(s) to enable, may be specified multiple times"); |
| 202 | |
| 203 | app_cli_opts.add_options() |
| 204 | ("help,h", "Print this help message and exit.") |
| 205 | ("version,v", "Print version information.") |
| 206 | ("full-version", "Print full version information.") |
| 207 | ("print-default-config", "Print default configuration template") |
| 208 | ("data-dir,d", bpo::value<std::string>(), "Directory containing program runtime data") |
| 209 | ("config-dir", bpo::value<std::string>(), "Directory containing configuration files such as config.ini") |
| 210 | ("config,c", bpo::value<std::string>()->default_value( "config.ini" ), "Configuration file name relative to config-dir") |
| 211 | ("logconf,l", bpo::value<std::string>()->default_value( "logging.json" ), "Logging configuration file name/path for library users"); |
| 212 | |
| 213 | my->_cfg_options.add(app_cfg_opts); |
| 214 | my->_app_options.add(app_cfg_opts); |
| 215 | my->_app_options.add(app_cli_opts); |
| 216 | } |
| 217 | |
| 218 | bool application::initialize_impl(int argc, char** argv, vector<abstract_plugin*> autostart_plugins) { |
| 219 | set_program_options(); |
no test coverage detected