60 using ArgHandler = std::function<void(
const char *arg)>;
61 std::unordered_map<std::string_view, ArgHandler> handlers;
63 for (
const auto *
const opt : {
"-h",
"--help"})
65 handlers[opt] = [&config](
const char *)
71 for (
const auto *
const opt : {
"-v",
"--version"})
73 handlers[opt] = [&config](
const char *)
80 for (
const auto *
const opt : {
"-c",
"--config"})
82 handlers[opt] = [&config](
const char *arg)
86 throw std::runtime_error(
"Missing config file argument");
90 std::cout <<
"\tHost: " << config.host <<
'\n' <<
"\tPort: " << config.port <<
'\n';
94 const std::string_view key = argv[1];
95 const char *argValue = (argc > 2) ? argv[2] :
nullptr;
97 if (
const auto it = handlers.find(key); it != handlers.end())
103 throw std::runtime_error(
"Unknown argument: " + std::string(key));