11auto main(
int argc,
char** argv) ->
int
13 auto cli_args = CLI::App{
"SRS system command line interface" };
16 argv = cli_args.ensure_utf8(argv);
18 auto spdlog_level = spdlog::level::info;
20 auto output_filenames = std::vector<std::string>{
"output.bin" };
21 auto is_version_print =
false;
22 auto is_root_version_print =
false;
24 cli_args.add_flag(
"-v, --version", is_version_print,
"show the current version");
25 cli_args.add_flag(
"--root-version", is_root_version_print,
"show the ROOT version if used");
26 cli_args.add_option(
"-l, --log-level", spdlog_level,
"set log level")
27 ->transform(CLI::CheckedTransformer(
spd_log_map, CLI::ignore_case))
28 ->capture_default_str();
29 cli_args.add_option(
"-p, --print-mode", print_mode,
"set data print mode")
30 ->transform(CLI::CheckedTransformer(
print_mode_map, CLI::ignore_case))
31 ->capture_default_str();
32 cli_args.add_option(
"-o, --output-files", output_filenames,
"set output file (or socket) names")
33 ->capture_default_str()
35 cli_args.parse(argc, argv);
39 std::println(
"{}", SRS_PROJECT_VERSION);
43 if (is_root_version_print)
46 std::println(
"{}", gROOT->GetVersion());
48 std::println(
"ROOT is not built");
53 spdlog::set_level(spdlog_level);
57 app.set_print_mode(print_mode);
58 app.set_output_filenames(output_filenames);
66 catch (
const CLI::ParseError& e)
70 catch (std::exception& ex)
72 spdlog::critical(
"Exception occured: {}", ex.what());