SRS-control 0.1.4
 
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1#include "CLIOptionsMap.hpp"
2#include <CLI/CLI.hpp>
3#include <print>
4#include <spdlog/spdlog.h>
5#include <srs/Application.hpp>
6
7#ifdef HAS_ROOT
8#include <TROOT.h>
9#endif
10
11auto main(int argc, char** argv) -> int
12{
13 auto cli_args = CLI::App{ "SRS system command line interface" };
14 try
15 {
16 argv = cli_args.ensure_utf8(argv);
17
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;
23
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()
34 ->expected(0, -1);
35 cli_args.parse(argc, argv);
36
37 if (is_version_print)
38 {
39 std::println("{}", SRS_PROJECT_VERSION);
40 return 0;
41 }
42
43 if (is_root_version_print)
44 {
45#ifdef HAS_ROOT
46 std::println("{}", gROOT->GetVersion());
47#else
48 std::println("ROOT is not built");
49#endif
50 return 0;
51 }
52
53 spdlog::set_level(spdlog_level);
54
55 auto app = srs::App{};
57 app.set_print_mode(print_mode);
58 app.set_output_filenames(output_filenames);
59
60 app.init();
61 app.read_data();
62 app.switch_on();
63 app.start_workflow();
64 // app.wait_for_finish();
65 }
66 catch (const CLI::ParseError& e)
67 {
68 cli_args.exit(e);
69 }
70 catch (std::exception& ex)
71 {
72 spdlog::critical("Exception occured: {}", ex.what());
73 }
74
75 return 0;
76}
const auto print_mode_map
const auto spd_log_map
void set_remote_endpoint(std::string_view remote_ip, int port_number)
auto main() -> int
Definition main.cpp:52
constexpr auto DEFAULT_SRS_IP
constexpr auto DEFAULT_SRS_CONTROL_PORT