From dfeb19b0a83b8ce57d28bf94a4f8d129993d1064 Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Mon, 12 Jan 2026 23:06:20 +0100 Subject: Initial commit --- src/main.cc | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/main.cc (limited to 'src/main.cc') diff --git a/src/main.cc b/src/main.cc new file mode 100644 index 0000000..c37ee6a --- /dev/null +++ b/src/main.cc @@ -0,0 +1,59 @@ +#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()); +} -- cgit v1.2.3-70-g09d2