Package joptsimple

Class OptionSpecBuilder

All Implemented Interfaces:
OptionDescriptor, OptionSpec<Void>

public class OptionSpecBuilder extends NoArgumentOptionSpec
Allows callers to specify whether a given option accepts arguments (required or optional).

Instances are returned from OptionParser.accepts(String) to allow the formation of parser directives as sentences in a "fluent interface" language. For example:


   OptionParser parser = new OptionParser();
   parser.accepts( "c" ).withRequiredArg().ofType( Integer.class );
 

If no methods are invoked on an instance of this class, then that instance's option will accept no argument.

Note that you should not use the fluent interface clauses in a way that would defeat the typing of option arguments:


   OptionParser parser = new OptionParser();
   ArgumentAcceptingOptionSpec<String> optionC =
       parser.accepts( "c" ).withRequiredArg();
   optionC.ofType( Integer.class );  // DON'T THROW AWAY THE TYPE!

   String value = parser.parse( "-c", "2" ).valueOf( optionC );  // ClassCastException
 
  • Field Details

  • Constructor Details

  • Method Details

    • attachToParser

      private void attachToParser()
    • withRequiredArg

      public ArgumentAcceptingOptionSpec<String> withRequiredArg()
      Informs an option parser that this builder's option requires an argument.
      Returns:
      a specification for the option
    • withOptionalArg

      public ArgumentAcceptingOptionSpec<String> withOptionalArg()
      Informs an option parser that this builder's option accepts an optional argument.
      Returns:
      a specification for the option
    • requiredIf

      public OptionSpecBuilder requiredIf(String dependent, String... otherDependents)

      Informs an option parser that this builder's option is required if the given option is present on the command line.

      For a given option, you should not mix this with requiredUnless to avoid conflicts.

      Parameters:
      dependent - an option whose presence on a command line makes this builder's option required
      otherDependents - other options whose presence on a command line makes this builder's option required
      Returns:
      self, so that the caller can add clauses to the fluent interface sentence
      Throws:
      OptionException - if any of the dependent options haven't been configured in the parser yet
    • requiredIf

      public OptionSpecBuilder requiredIf(OptionSpec<?> dependent, OptionSpec<?>... otherDependents)

      Informs an option parser that this builder's option is required if the given option is present on the command line.

      For a given option, you should not mix this with requiredUnless to avoid conflicts.

      This method recognizes only instances of options returned from the fluent interface methods.

      Parameters:
      dependent - the option whose presence on a command line makes this builder's option required
      otherDependents - other options whose presence on a command line makes this builder's option required
      Returns:
      self, so that the caller can add clauses to the fluent interface sentence
    • requiredUnless

      public OptionSpecBuilder requiredUnless(String dependent, String... otherDependents)

      Informs an option parser that this builder's option is required if the given option is absent on the command line.

      For a given option, you should not mix this with requiredIf to avoid conflicts.

      Parameters:
      dependent - an option whose absence on a command line makes this builder's option required
      otherDependents - other options whose absence on a command line makes this builder's option required
      Returns:
      self, so that the caller can add clauses to the fluent interface sentence
      Throws:
      OptionException - if any of the dependent options haven't been configured in the parser yet
    • requiredUnless

      public OptionSpecBuilder requiredUnless(OptionSpec<?> dependent, OptionSpec<?>... otherDependents)

      Informs an option parser that this builder's option is required if the given option is absent on the command line.

      For a given option, you should not mix this with requiredIf to avoid conflicts.

      This method recognizes only instances of options returned from the fluent interface methods.

      Parameters:
      dependent - the option whose absence on a command line makes this builder's option required
      otherDependents - other options whose absence on a command line makes this builder's option required
      Returns:
      self, so that the caller can add clauses to the fluent interface sentence
    • availableIf

      public OptionSpecBuilder availableIf(String dependent, String... otherDependents)

      Informs an option parser that this builder's option is allowed if the given option is present on the command line.

      For a given option, you should not mix this with availableUnless to avoid conflicts.

      Parameters:
      dependent - an option whose presence on a command line makes this builder's option allowed
      otherDependents - other options whose presence on a command line makes this builder's option allowed
      Returns:
      self, so that the caller can add clauses to the fluent interface sentence
      Throws:
      OptionException - if any of the dependent options haven't been configured in the parser yet
    • availableIf

      public OptionSpecBuilder availableIf(OptionSpec<?> dependent, OptionSpec<?>... otherDependents)

      Informs an option parser that this builder's option is allowed if the given option is present on the command line.

      For a given option, you should not mix this with requiredUnless to avoid conflicts.

      This method recognizes only instances of options returned from the fluent interface methods.

      Parameters:
      dependent - the option whose presence on a command line makes this builder's option allowed
      otherDependents - other options whose presence on a command line makes this builder's option allowed
      Returns:
      self, so that the caller can add clauses to the fluent interface sentence
    • availableUnless

      public OptionSpecBuilder availableUnless(String dependent, String... otherDependents)

      Informs an option parser that this builder's option is allowed if the given option is absent on the command line.

      For a given option, you should not mix this with requiredIf to avoid conflicts.

      Parameters:
      dependent - an option whose absence on a command line makes this builder's option allowed
      otherDependents - other options whose absence on a command line makes this builder's option allowed
      Returns:
      self, so that the caller can add clauses to the fluent interface sentence
      Throws:
      OptionException - if any of the dependent options haven't been configured in the parser yet
    • availableUnless

      public OptionSpecBuilder availableUnless(OptionSpec<?> dependent, OptionSpec<?>... otherDependents)

      Informs an option parser that this builder's option is allowed if the given option is absent on the command line.

      For a given option, you should not mix this with requiredIf to avoid conflicts.

      This method recognizes only instances of options returned from the fluent interface methods.

      Parameters:
      dependent - the option whose absence on a command line makes this builder's option allowed
      otherDependents - other options whose absence on a command line makes this builder's option allowed
      Returns:
      self, so that the caller can add clauses to the fluent interface sentence
    • validatedDependents

      private List<String> validatedDependents(String dependent, String... otherDependents)