MCPcopy Create free account
hub / github.com/PixlOne/logiops / readCliOptions

Function readCliOptions

src/logid/logid.cpp:50–130  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

48};
49
50void readCliOptions(const int argc, char** argv, CmdlineOptions& options) {
51 for (int i = 1; i < argc; i++) {
52 Option option = Option::None;
53 if (argv[i][0] == '-') {
54 // This argument is an option
55 switch (argv[i][1]) {
56 case '-': {
57 // Full option name
58 std::string op_str = argv[i];
59 if (op_str == "--verbose") option = Option::Verbose;
60 if (op_str == "--config") option = Option::Config;
61 if (op_str == "--help") option = Option::Help;
62 if (op_str == "--version") option = Option::Version;
63 break;
64 }
65 case 'v': // Verbosity
66 option = Option::Verbose;
67 break;
68 case 'V': //Version
69 option = Option::Version;
70 break;
71 case 'c': // Config file path
72 option = Option::Config;
73 break;
74 case 'h': // Help
75 option = Option::Help;
76 break;
77 default:
78 logPrintf(WARN, "%s is not a valid option, ignoring.",
79 argv[i]);
80 }
81
82 switch (option) {
83 case Option::Verbose: {
84 if (++i >= argc) {
85 global_loglevel = DEBUG; // Assume debug verbosity
86 break;
87 }
88 std::string loglevel = argv[i];
89 try {
90 global_loglevel = toLogLevel(argv[i]);
91 } catch (std::invalid_argument& e) {
92 if (argv[i][0] == '-') {
93 global_loglevel = DEBUG; // Assume debug verbosity
94 i--; // Go back to last argument to continue loop.
95 } else {
96 logPrintf(WARN, e.what());
97 printf("Valid verbosity levels are: Debug, Info, "
98 "Warn/Warning, or Error.\n");
99 exit(EXIT_FAILURE);
100 }
101 }
102 break;
103 }
104 case Option::Config: {
105 if (++i >= argc) {
106 logPrintf(ERROR, "Config file is not specified.");
107 exit(EXIT_FAILURE);

Callers 1

mainFunction · 0.85

Calls 1

whatMethod · 0.45

Tested by

no test coverage detected