gh-wh-handler/src/main.cpp

53 lines
1.5 KiB
C++

#include <iostream>
#include <cstdio>
#include <string>
#include <nlohmann/json.hpp>
#include "logger.hpp"
#include "routes.hpp"
#include "config.hpp"
void signal_handler(const int signum) {
// std::cout << "Interrupt signal (" << signum << ") received.\n";
std::cout << "Exiting..." << std::endl;
std::exit(signum);
}
int main(int argc, char **argv) {
// Check for config file argument, exit if it's not there
if (argc < 2 || argc > 3) {
std::cerr << "Usage: " << 0[argv] << " </path/to/config.json> [--config]" << std::endl;
return 1;
}
std::time_t now = std::time(nullptr);
std::tm *now_tm = std::localtime(&now);
char time_buffer[80];
std::strftime(time_buffer, sizeof(time_buffer), "%Y-%m-%d_%H-%M-%S", now_tm);
std::string config_file_path = 1[argv];
std::string log_file_path = config_file_path.substr(0, config_file_path.find_last_of("/")) + "/gh-wh-handler_" + time_buffer + ".log";
Logger::init(log_file_path);
if (argc == 3 && std::string(argv[2]) == "--config") {
Config::open_config_menu();
return 0;
}
// Check if config file exists
if (!std::filesystem::exists(config_file_path)) {
Logger::warn("Config file does not exist, creating...");
Config::create_config();
}
// Load configuration
nlohmann::json config = Config::get_config(config_file_path);
std::signal(SIGINT, signal_handler);
// Start server
Routes routes(config);
return 0;
}