#include "config.h" #include "server.h" #include "plugin.h" #include #include #include using namespace std::string_literals; void usage() { std::cout << "usage: webserver [-c ]" << std::endl; } int main(int argc, char* argv[]) { std::string config_filename; if (!(argc == 1 || argc == 3)) { usage(); return 1; } if (argc == 3) { if (argv[1] != "-c"s) { usage(); return 1; } config_filename = argv[2]; } try { Config config{config_filename}; PluginLoader plugin_loader(config); plugin_loader.load_plugins(); if (!plugin_loader.validate_config()) throw std::runtime_error("Couldn't find all configured plugins."); return server(config); } catch (const std::exception& ex) { std::cout << "Error: " << ex.what() << std::endl; return 1; } }