Package io.vertx.core.cli

## Class Option

- java.lang.Object
- - io.vertx.core.cli.Option

- Direct Known Subclasses:
    `TypedOption`

      public class Option
      extends Object

  Models command line options. Options are values passed to a command line interface using -x or --x. Supported syntaxes depend on the parser.

  Short name is generally used with a single dash, while long name requires a double-dash.
  Author:
    Clement Escoffier

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected String` | `argName` | the option name used in usage message.
    `protected Set<String>` | `choices` | if the option value has to be in a definited set, this field represents the set of values.
    `static String` | `DEFAULT_ARG_NAME` | Default name in the usage message.
    `protected String` | `defaultValue` | the option default value.
    `protected String` | `description` | The option description.
    `protected boolean` | `flag` | whether or not the option is a flag.
    `protected boolean` | `help` | whether or not the option is a "help" option.
    `protected boolean` | `hidden` | whether or not the option is hidden.
    `protected String` | `longName` | the option long name.
    `protected boolean` | `multiValued` | whether or not the option can recevie multiple values.
    `static String` | `NO_NAME` | The default long name / short name of the option.
    `protected boolean` | `required` | whether or not the option is required.
    `protected String` | `shortName` | the option short name.
    `protected boolean` | `singleValued` | whether or not the option receives a single value.

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Option()` | Creates a new empty instance of `Option`.
    `Option​(Option other)` | Creates a new instance of `Option` by copying the state of another `Option`.
    `Option​(JsonObject json)` | Creates a new instance of `Option` from the given `JsonObject`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `acceptValue()` |
    `Option` | `addChoice​(String choice)` | Adds a choice to the list of values accepted by this option.
    `void` | `ensureValidity()` | Checks whether or not the option is valid.
    `String` | `getArgName()` |
    `Set<String>` | `getChoices()` |
    `String` | `getDefaultValue()` |
    `String` | `getDescription()` |
    `String` | `getLongName()` |
    `String` | `getName()` |
    `String` | `getShortName()` |
    `boolean` | `isFlag()` |
    `boolean` | `isHelp()` | Checks whether or not this option is a "Help" option.
    `boolean` | `isHidden()` |
    `boolean` | `isMultiValued()` |
    `boolean` | `isRequired()` |
    `boolean` | `isSingleValued()` |
    `Option` | `setArgName​(String argName)` | Sets te arg name for this option.
    `Option` | `setChoices​(Set<String> choices)` | Sets the list of values accepted by this option.
    `Option` | `setDefaultValue​(String defaultValue)` | Sets the default value of this option
    `Option` | `setDescription​(String description)` | Sets te description of this option.
    `Option` | `setFlag​(boolean flag)` | Configures the current `Option` to be a flag.
    `Option` | `setHelp​(boolean help)` | Sets whether or not this option is a "help" option
    `Option` | `setHidden​(boolean hidden)` | Sets whether or not this option should be hidden
    `Option` | `setLongName​(String longName)` | Sets the long name of this option.
    `Option` | `setMultiValued​(boolean multiValued)` | Sets whether or not this option can receive several values.
    `Option` | `setRequired​(boolean required)` | Sets whether or not this option is mandatory.
    `Option` | `setShortName​(String shortName)` | Sets the short name of this option.
    `Option` | `setSingleValued​(boolean singleValued)` | Sets whether or not this option can receive a value.
    `JsonObject` | `toJson()` | Gets the json representation of this `Option`.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### DEFAULT_ARG_NAME

          public static final String DEFAULT_ARG_NAME

      Default name in the usage message.
      See Also:
        Constant Field Values

    - #### NO_NAME

          public static final String NO_NAME

      The default long name / short name of the option. Notice that options requires at least a regular long name or short name.
      See Also:
        Constant Field Values

    - #### longName

          protected String longName

      the option long name.

    - #### shortName

          protected String shortName

      the option short name.

    - #### argName

          protected String argName

      the option name used in usage message.

    - #### description

          protected String description

      The option description.

    - #### required

          protected boolean required

      whether or not the option is required. A mandatory not set throws a `MissingOptionException`.

    - #### hidden

          protected boolean hidden

      whether or not the option is hidden. Hidden options are not displayed in usage.

    - #### singleValued

          protected boolean singleValued

      whether or not the option receives a single value. `true` by default.

    - #### multiValued

          protected boolean multiValued

      whether or not the option can recevie multiple values.

    - #### defaultValue

          protected String defaultValue

      the option default value.

    - #### flag

          protected boolean flag

      whether or not the option is a flag. Flag option does not require a value. If an option is a flag, it is evaluated to {@link true} if the option is used in the command line.

    - #### help

          protected boolean help

      whether or not the option is a "help" option. Is the user execute the command line enabling a help option, the command line validation won't fail, and give the command the opportunity to display the usage message, instead of throwing an exception during the parsing.

    - #### choices

          protected Set<String> choices

      if the option value has to be in a definited set, this field represents the set of values. Value are sorted alphabetically.

  - ### Constructor Detail

    - #### Option

          public Option()

      Creates a new empty instance of `Option`.

    - #### Option

          public Option​(Option other)

      Creates a new instance of `Option` by copying the state of another `Option`.
      Parameters:
        `other` - the other option

    - #### Option

          public Option​(JsonObject json)

      Creates a new instance of `Option` from the given `JsonObject`
      Parameters:
        `json` - the json object representing the option
      See Also:
        `toJson()`

  - ### Method Detail

    - #### toJson

          public JsonObject toJson()

      Gets the json representation of this `Option`.
      Returns:
        the json representation

    - #### ensureValidity

          public void ensureValidity()

      Checks whether or not the option is valid. This implementation check that it has a short name or a long name. This method is intended to be extended by sub-class. Parser should check that the set of option of a `CLI` is valid before starting the parsing.

      If the configuration is not valid, this method throws a `IllegalArgumentException`.

    - #### acceptValue

          public boolean acceptValue()

      Returns:
        whether or not the option can receive a value.

    - #### getName

          public String getName()

      Returns:
        the option name. It returns the long name if set, the short name otherwise. It cannot return `null` for valid option
      See Also:
        `ensureValidity()`

    - #### isMultiValued

          public boolean isMultiValued()

      Returns:
        whether or not this option can receive several values.

    - #### setMultiValued

          public Option setMultiValued​(boolean multiValued)

      Sets whether or not this option can receive several values.
      Parameters:
        `multiValued` - whether or not this option is multi-valued.
      Returns:
        the current `Option` instance

    - #### isSingleValued

          public boolean isSingleValued()

      Returns:
        whether or not this option is single valued.

    - #### setSingleValued

          public Option setSingleValued​(boolean singleValued)

      Sets whether or not this option can receive a value.
      Parameters:
        `singleValued` - whether or not this option is single-valued.
      Returns:
        the current `Option` instance

    - #### getArgName

          public String getArgName()

      Returns:
        the option arg name used in usage messages, `null` if not set.

    - #### setArgName

          public Option setArgName​(String argName)

      Sets te arg name for this option.
      Parameters:
        `argName` - the arg name, must not be `null`
      Returns:
        the current `Option` instance

    - #### getDescription

          public String getDescription()

      Returns:
        the description of this option, `null` if not set.

    - #### setDescription

          public Option setDescription​(String description)

      Sets te description of this option.
      Parameters:
        `description` - the description
      Returns:
        the current `Option` instance

    - #### isHidden

          public boolean isHidden()

      Returns:
        whtehr or not this option is hidden.

    - #### setHidden

          public Option setHidden​(boolean hidden)

      Sets whether or not this option should be hidden
      Parameters:
        `hidden` - `true` to make this option hidden, {@link false} otherwise
      Returns:
        the current `Option` instance

    - #### getLongName

          public String getLongName()

      Returns:
        the option long name, `null` if not set.

    - #### setLongName

          public Option setLongName​(String longName)

      Sets the long name of this option.
      Parameters:
        `longName` - the long name
      Returns:
        the current `Option` instance

    - #### isRequired

          public boolean isRequired()

      Returns:
        whether or not this option is mandatory.

    - #### setRequired

          public Option setRequired​(boolean required)

      Sets whether or not this option is mandatory.
      Parameters:
        `required` - `true` to make this option mandatory, {@link false} otherwise
      Returns:
        the current `Option` instance

    - #### getShortName

          public String getShortName()

      Returns:
        the short name of this option, `null` if not set.

    - #### setShortName

          public Option setShortName​(String shortName)

      Sets the short name of this option.
      Parameters:
        `shortName` - the short name
      Returns:
        the current `Option` instance

    - #### getDefaultValue

          public String getDefaultValue()

      Returns:
        the default value of this option, `null` if not set.

    - #### setDefaultValue

          public Option setDefaultValue​(String defaultValue)

      Sets the default value of this option
      Parameters:
        `defaultValue` - the default value
      Returns:
        the current `Option` instance

    - #### isFlag

          public boolean isFlag()

      Returns:
        whether or not this option is a flag.

    - #### setFlag

          public Option setFlag​(boolean flag)

      Configures the current `Option` to be a flag. It will be evaluated to `true` if it's found in the command line. If you need a flag that may receive a value, use, in this order: `

             option.setFlag(true).setSingleValued(true)

      `
      Parameters:
        `flag` - whether or not the option is a flag.
      Returns:
        the current `Option`

    - #### isHelp

          public boolean isHelp()

      Checks whether or not this option is a "Help" option.
      Returns:
        `true` if this option is a "help" option.

    - #### setHelp

          public Option setHelp​(boolean help)

      Sets whether or not this option is a "help" option
      Parameters:
        `help` - `true` to set this option as a "Help" option
      Returns:
        the current `Option`

    - #### getChoices

          public Set<String> getChoices()

      Returns:
        get the list of choices for the given option. Empty if this option does not define choices.

    - #### setChoices

          public Option setChoices​(Set<String> choices)

      Sets the list of values accepted by this option. If the value set by the user does not match once of these values, a `InvalidValueException` exception is thrown.
      Parameters:
        `choices` - the choices
      Returns:
        the current `Option`

    - #### addChoice

          public Option addChoice​(String choice)

      Adds a choice to the list of values accepted by this option. If the value set by the user does not match once of these values, a `InvalidValueException` exception is thrown.
      Parameters:
        `choice` - the choice
      Returns:
        the current `Option`