MongoDB  2.7.0
Public Member Functions | List of all members
mongo::optionenvironment::OptionsParser Class Reference

Handles parsing of the command line as well as YAML and INI config files. More...

#include <options_parser.h>

Public Member Functions

Status run (const OptionSection &, const std::vector< std::string > &argv, const std::map< std::string, std::string > &env, Environment *)
 Handles parsing of the command line as well as YAML and INI config files. More...
 

Detailed Description

Handles parsing of the command line as well as YAML and INI config files.

Takes an OptionSection instance that describes the allowed options, parses argv (env not yet supported), and populates an Environment with the results.

Usage:

namespace moe = mongo::optionenvironment;

moe::OptionsParser parser; moe::Environment environment; moe::OptionSection options;

// Register our allowed options with our OptionSection options.addOptionChaining("help", "help", moe::Switch, "Display Help"); options.addOptionChaining("port", "port", moe::Int, "Port");

// Run the parser Status ret = parser.run(options, argv, env, &environment); if (!ret.isOK()) { cerr << options.helpString() << endl; exit(EXIT_FAILURE); }

bool displayHelp; ret = environment.get(moe::Key("help"), &displayHelp); if (!ret.isOK()) { // Help is a switch, so it should always be set cout << "Should not get here" << endl; exit(EXIT_FAILURE); } if (displayHelp) { cout << options.helpString() << endl; exit(EXIT_SUCCESS); }

// Get the value of port from the environment int port = 27017; ret = environment.get(moe::Key("port"), &port); if (ret.isOK()) { // We have overridden port here, otherwise it stays as the default. }

Member Function Documentation

Status mongo::optionenvironment::OptionsParser::run ( const OptionSection options,
const std::vector< std::string > &  argv,
const std::map< std::string, std::string > &  env,
Environment environment 
)

Handles parsing of the command line as well as YAML and INI config files.

Run the OptionsParser.

The OptionSection be a description of the allowed options. This function populates the given Environment with the results of parsing the command line and or config files but does not call validate on the Environment.

The only special option is the "config" option. This function will check if the "config" option was set on the command line and if so attempt to read the given config file. For binaries that do not support config files, the "config" option should not be registered in the OptionSection.

Overview:

  1. Parse argc and argv using the given OptionSection as a description of expected options
  2. Check for a "config" argument
  3. If "config" found, read config file
  4. Detect config file type (YAML or INI)
  5. Parse config file using the given OptionSection as a description of expected options
  6. Add the results to the output Environment in the proper order to ensure correct precedence

The documentation for this class was generated from the following files: