parselink-old/source/main.cpp

55 lines
1.2 KiB
C++

#include <logging.h>
#include <utility/argparse.h>
#include <server.h>
namespace {
parselink::logging::logger logger("main");
}
using level = parselink::logging::level;
int run(std::span<std::string_view> 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<bool>("verbose")) {
logger.set_threshold(level::trace);
}
auto server = parselink::make_server(args.opt<std::string>("address"),
args.opt<std::uint16_t>("user_port"),
args.opt<std::uint16_t>("websocket_port"));
if (server) {
server->run();
}
return 0;
}
int main(int argc, char* argv[])
{
// TODO(ksassenrath): Add configuration file to the mix.
std::vector<std::string_view> args;
for (int i = 1; i < argc; ++i) {
args.emplace_back(argv[i]);
}
return run(args);
}