#include "apps.h" #include #include namespace trygvis { namespace apps { using namespace log4cplus; using namespace std; namespace po = boost::program_options; const po::options_description logging_options() { po::options_description desc; return desc; } void setup_logging(po::variables_map vm) { BasicConfigurator config; config.configure(); } int launch_app(int argc, char *argv[], app& app) { po::options_description desc("Options"); auto x = desc.add_options(); app.add_options(x); desc.add(logging_options()); po::variables_map vm; auto parsed = po::parse_command_line(argc, argv, desc); po::store(parsed, vm); app_execution execution(desc, vm); try { po::notify(vm); } catch (boost::program_options::required_option &e) { cerr << "Missing required option: " << e.get_option_name() << endl; execution.usage(); return EXIT_FAILURE; } auto unrecognized = po::collect_unrecognized(parsed.options, po::include_positional); if (vm.count("help")) { cerr << desc << "\n"; return EXIT_FAILURE; } if (unrecognized.size()) { cerr << "Unrecognized option: " << unrecognized.at(0) << "\n"; return EXIT_FAILURE; } setup_logging(vm); return app.main(execution); } void app_execution::usage() { cerr << desc << endl; } } }