24int main(
int argc,
char* argv[])
26 std::cout <<
"=== CLI Config Parser Example ===\n\n";
31 std::cout <<
"1. No arguments provided. Demonstrating with simulated args...\n\n";
34 std::vector<const char*> sim_args
35 = {
"cli_parser_example",
"--config",
37 "thread.pool_size=8",
"--set",
38 "logger.level=debug",
"positional_arg"};
45 std::cerr <<
"Parse error: " << result.error().message <<
"\n";
49 auto args = result.value();
51 std::cout <<
" Parsed results:\n";
52 std::cout <<
" Config path: " << (args.config_path.empty() ?
"(none)" : args.config_path)
54 std::cout <<
" Show help: " << (args.show_help ?
"true" :
"false") <<
"\n";
55 std::cout <<
" Show version: " << (args.show_version ?
"true" :
"false") <<
"\n";
57 std::cout <<
"\n Overrides (" << args.overrides.size() <<
"):\n";
58 for (
const auto& [key, value] : args.overrides)
60 std::cout <<
" " << key <<
" = " << value <<
"\n";
63 std::cout <<
"\n Positional args (" << args.positional_args.size() <<
"):\n";
64 for (
const auto& arg : args.positional_args)
66 std::cout <<
" " << arg <<
"\n";
72 std::cout <<
"1. Parsing actual command-line arguments...\n\n";
77 std::cerr <<
"Parse error: " << result.error().message <<
"\n";
82 auto args = result.value();
90 if (args.show_version)
96 std::cout <<
" Config path: " << (args.config_path.empty() ?
"(none)" : args.config_path)
98 std::cout <<
" Overrides: " << args.overrides.size() <<
"\n";
99 for (
const auto& [key, value] : args.overrides)
101 std::cout <<
" " << key <<
" = " << value <<
"\n";
106 std::cout <<
"\n2. Help output:\n";
109 std::cout <<
"\nDone.\n";