diff options
Diffstat (limited to 'src/main.cc')
| -rw-r--r-- | src/main.cc | 59 |
1 files changed, 59 insertions, 0 deletions
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 <iostream> +#include <optional> +#include <string_view> +#include <vector> + +#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<std::string_view> 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 <the_jk@spawned.biz>\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<std::string>()); + } + + return Monitor::run( + opt_display->has_argument() ? opt_display->argument() + : std::optional<std::string>(), + opt_font_name->has_argument() ? opt_font_name->argument() + : std::optional<std::string>()); +} |
