aboutsummaryrefslogtreecommitdiff
path: root/src/dedicated/main.cc
blob: d9c5bb4e1ebc072a11b882b94a3aac99589833d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "main.hh"

static std::string& get_port() noexcept {
    static std::string port{shared::DEFAULT_PORT};
    return port;
}

static bool parse_arg(const int& c, const char* const arg) {
    switch (c) {
    case 'p':
        get_port() = boost::lexical_cast<std::string>(arg);
        break;
    default:
        return false;
    }
    return true;
}

static const shared::args_t& get_options() {
    static shared::args_t ret = []() -> shared::args_t {
        shared::args_t ret{
            {.name = "port", .desc = "override the default port", .val = "p:"}};
        std::ranges::copy(shared::get_options(), std::back_inserter(ret));
        std::ranges::copy(server::get_options(), std::back_inserter(ret));
        return ret;
    }();

    return ret;
}

int main(const int argc, char* const argv[]) {
    shared::init();

    shared::parse_args(argc, argv, get_options(),
                       {&parse_arg, &shared::parse_arg, &server::parse_arg});

    shared::try_main(server::main, shared::DEFAULT_ADDRESS, get_port());
    return EXIT_SUCCESS;
}