void CustomOptionDescription::checkIfPositional(const boost::program_options::positional_options_description& positionalDesc) { for (size_t i = 0; i < positionalDesc.max_total_count(); ++i) { if (optionID == positionalDesc.name_for_position(i)) { boost::algorithm::erase_all(optionDisplayName, "-"); isPositional = true; break; } } }
/** process arguments according to option description */ int run(int argc, char *argv[]) { po::options_description all_opts; all_opts.add(desc_).add(positional_); po::store(po::command_line_parser(argc, argv) .options(all_opts) .positional(positional_opts_) .run(), vm_); po::notify(vm_); if (vm_.count("help")) { std::cout << cmd_name_ << " [options]"; if (positional_opts_.max_total_count() != 0) std::cout << " " << positional_opts_.name_for_position(0); if (positional_opts_.max_total_count() > 1) std::cout << "..."; std::cout << std::endl << desc_; return 0; } return process(); }
void printHelp(const po::options_description& desc, const po::positional_options_description& posOpts) { std::vector<std::string> parts; parts.push_back("Usage: ntfs_linker"); for (unsigned int i = 0; i < posOpts.max_total_count(); ++i) { parts.push_back(posOpts.name_for_position(i)); } if (desc.options().size() > 0) { parts.push_back("[options]"); } std::stringstream ss; std::copy(parts.begin(), parts.end(), std::ostream_iterator<std::string>(ss, " ")); std::cout << "ntfs-linker, Copyright (c) Stroz Friedberg, LLC" << std::endl; std::cout << "Version " << VERSION << std::endl; std::cout << ss.str() << std::endl; std::cout << desc << std::endl; }