52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
#include "parselink/logging.h"
|
|
#include <server.h>
|
|
#include <utility/argparse.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);
|
|
}
|