#include "args.hh" #include "monitor.hh" #include "notify.hh" #include #include #include #include #ifndef VERSION # define VERSION "" #endif int main(int argc, char** argv) { auto args = Args::create(); auto help = args->option('h', "help", "display this text and exit."); auto version = args->option('V', "version", "display version and exit."); auto opt_font_name = args->option_argument( 'F', "font", "use font named FONT instead of default or Xresources.", "FONT"); auto opt_display = args->option_argument( 'D', "display", "connect to DISPLAY instead of default.", "DISPLAY"); auto notify = args->option('N', "notification", "claude notification ."); std::vector arguments; if (!args->run(argc, argv, &arguments)) { args->print_error(std::cerr); std::cerr << "Try `claudemon --help` for usage.\n"; return EXIT_FAILURE; } if (help->is_set()) { std::cout << "Usage: `claudemon [OPTIONS]`\n" << "Monitors claude.\n" << "\n"; args->print_help(std::cout); return EXIT_SUCCESS; } if (version->is_set()) { std::cout << "Timer " VERSION " written by " << "Joel Klinghed \n"; return EXIT_SUCCESS; } if (!arguments.empty()) { std::cerr << "Unexpected arguments after options.\n" << "Try `claudemon --help` for usage.\n"; return EXIT_FAILURE; } if (notify->is_set()) { return Notify::run(opt_display->has_argument() ? opt_display->argument() : std::optional()); } return Monitor::run( opt_display->has_argument() ? opt_display->argument() : std::optional(), opt_font_name->has_argument() ? opt_font_name->argument() : std::optional()); }