I\'m using Boost Program Options Library to parse the command line arguments.
I have the following requirements:
std::string conn_mngr_id;
std::string conn_mngr_channel;
int32_t priority;
int32_t timeout;
boost::program_options::options_description p_opts_desc("Program options");
boost::program_options::variables_map p_opts_vm;
try {
p_opts_desc.add_options()
("help,h", "produce help message")
("id,i", boost::program_options::value(&conn_mngr_id)->required(), "Id used to connect to ConnectionManager")
("channel,c", boost::program_options::value(&conn_mngr_channel)->required(), "Channel to attach with ConnectionManager")
("priority,p", boost::program_options::value(&priority)->default_value(1), "Channel to attach with ConnectionManager")
("timeout,t", boost::program_options::value(&timeout)->default_value(15000), "Channel to attach with ConnectionManager")
;
boost::program_options::store(boost::program_options::parse_command_line(argc, argv, p_opts_desc), p_opts_vm);
boost::program_options::notify(p_opts_vm);
if (p_opts_vm.count("help")) {
std::cout << p_opts_desc << std::endl;
return 1;
}
} catch (const boost::program_options::required_option & e) {
if (p_opts_vm.count("help")) {
std::cout << p_opts_desc << std::endl;
return 1;
} else {
throw e;
}
}