#include #include #include namespace { parselink::logging::logger logger("main"); } using level = parselink::logging::level; int run(std::span arg_list) { argparse::command_line_parser parser({ {"address", {std::string{"0.0.0.0"}}}, {"user_port", {std::uint16_t{9001}}}, {"websocket_port", {std::uint16_t{10501}}}, {"verbose", {false}}, }); auto args = parser.parse(arg_list); if (args.ec != argparse::command_line_parser::result::code::no_error) { logger.error("Failed to parse arguments: {} ({})", args.ec, args.error_value); return 1; } if (args.opt("verbose")) { logger.set_threshold(level::trace); } auto server = parselink::make_server(args.opt("address"), args.opt("user_port"), args.opt("websocket_port")); if (server) { server->run(); } return 0; } int main(int argc, char* argv[]) { // TODO(ksassenrath): Add configuration file to the mix. std::vector args; for (int i = 1; i < argc; ++i) { args.emplace_back(argv[i]); } return run(args); }