bool CommandCat::setup(const std::vector<std::string>& arguments) { po::options_description opts_cmd{"COMMAND OPTIONS"}; opts_cmd.add_options() ("object-type,t", po::value<std::vector<std::string>>(), "Read only objects of given type (node, way, relation, changeset)") ; po::options_description opts_common{add_common_options()}; po::options_description opts_input{add_multiple_inputs_options()}; po::options_description opts_output{add_output_options()}; po::options_description hidden; hidden.add_options() ("input-filenames", po::value<std::vector<std::string>>(), "Input files") ; po::options_description desc; desc.add(opts_cmd).add(opts_common).add(opts_input).add(opts_output); po::options_description parsed_options; parsed_options.add(desc).add(hidden); po::positional_options_description positional; positional.add("input-filenames", -1); po::variables_map vm; po::store(po::command_line_parser(arguments).options(parsed_options).positional(positional).run(), vm); po::notify(vm); setup_common(vm, desc); setup_input_files(vm); setup_output_file(vm); return true; }
bool CommandSort::setup(const std::vector<std::string>& arguments) { po::options_description opts_common{add_common_options()}; po::options_description opts_input{add_multiple_inputs_options()}; po::options_description opts_output{add_output_options()}; po::options_description hidden; hidden.add_options() ("input-filenames", po::value<std::vector<std::string>>(), "OSM input files") ("strategy,s", po::value<std::string>(), "Strategy (default: simple)") ; po::options_description desc; desc.add(opts_common).add(opts_input).add(opts_output); po::options_description parsed_options; parsed_options.add(desc).add(hidden); po::positional_options_description positional; positional.add("input-filenames", -1); po::variables_map vm; po::store(po::command_line_parser(arguments).options(parsed_options).positional(positional).run(), vm); po::notify(vm); setup_common(vm, desc); setup_progress(vm); setup_input_files(vm); setup_output_file(vm); if (vm.count("input-filenames")) { m_filenames = vm["input-filenames"].as<std::vector<std::string>>(); } if (vm.count("strategy")) { m_strategy = vm["strategy"].as<std::string>(); if (m_strategy != "simple" && m_strategy != "multipass") { throw argument_error{"Unknown strategy: " + m_strategy}; } } return true; }
bool CommandMergeChanges::setup(const std::vector<std::string>& arguments) { po::options_description cmdline("Available options"); cmdline.add_options() ("simplify,s", "Simplify change") ; add_common_options(cmdline); add_multiple_inputs_options(cmdline); add_output_options(cmdline); po::options_description hidden("Hidden options"); hidden.add_options() ("input-filenames", po::value<std::vector<std::string>>(), "Input files") ; po::options_description desc("Allowed options"); desc.add(cmdline).add(hidden); po::positional_options_description positional; positional.add("input-filenames", -1); po::variables_map vm; po::store(po::command_line_parser(arguments).options(desc).positional(positional).run(), vm); po::notify(vm); if (vm.count("help")) { std::cout << "Usage: osmium merge-changes [OPTIONS] OSM-CHANGE-FILE...\n\n"; std::cout << cmdline << "\n"; exit(0); } setup_common(vm); setup_input_files(vm); setup_output_file(vm); if (vm.count("simplify")) { m_simplify_change = true; } return true; }
bool CommandAddRefs::setup(const std::vector<std::string>& arguments) { po::options_description cmdline("Available options"); cmdline.add_options() ("id-file,i", po::value<std::string>(), "Read OSM IDs from given file") ("source,s", po::value<std::string>(), "Source file supplying the referenced objects") ("source-format", po::value<std::string>(), "Format of source file") ; add_common_options(cmdline); add_multiple_inputs_options(cmdline); add_output_options(cmdline); po::options_description hidden("Hidden options"); hidden.add_options() ("input-filenames", po::value<std::vector<std::string>>(), "OSM input files") ; po::options_description desc("Allowed options"); desc.add(cmdline).add(hidden); po::positional_options_description positional; positional.add("input-filenames", -1); po::variables_map vm; po::store(po::command_line_parser(arguments).options(desc).positional(positional).run(), vm); po::notify(vm); if (vm.count("help")) { std::cout << "Usage: osmium add-refs [OPTIONS] -s OSM-DATA-FILE OSM-DATA-FILE...\n" << " osmium add-refs [OPTIONS] -s OSM-DATA-FILE -i ID-FILE\n\n"; std::cout << cmdline << "\n"; exit(0); } setup_common(vm); setup_input_files(vm, true); setup_output_file(vm); if (vm.count("id-file")) { std::string filename = vm["id-file"].as<std::string>(); std::ifstream id_file{filename}; if (!id_file.is_open()) { throw argument_error("Could not open file '" + filename + "'"); } for (std::string line; std::getline(id_file, line); ) { if (line.empty() || line[0] == '#') { continue; } auto pos = line.find(' '); if (pos != std::string::npos) { line = line.erase(pos); } parse_and_add_id(line); } } if (vm.count("source")) { m_source_filename = vm["source"].as<std::string>(); } if (vm.count("source-format")) { m_source_format = vm["source-format"].as<std::string>(); } m_source_file = osmium::io::File{m_source_filename, m_source_format}; return true; }