Package joptsimple

Class OptionSpecBuilder

  • All Implemented Interfaces:
    OptionDescriptor, OptionSpec<Void>

    public class OptionSpecBuilder
    extends AbstractOptionSpec<Void>
    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
     
    Author:
    Paul Holser
    • Method Detail

      • 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
      • acceptsArguments

        public boolean acceptsArguments()
        Description copied from interface: OptionDescriptor
        Does this option accept arguments?
        Returns:
        whether the option accepts arguments
      • requiresArgument

        public boolean requiresArgument()
        Description copied from interface: OptionDescriptor
        Does this option require an argument?
        Returns:
        whether the option requires an argument
      • isRequired

        public boolean isRequired()
        Description copied from interface: OptionDescriptor
        Is this option required on a command line?
        Returns:
        whether the option is required
      • argumentDescription

        public String argumentDescription()
        Description copied from interface: OptionDescriptor
        Gives a short description of the option's argument.
        Returns:
        a description for the option's argument
      • argumentTypeIndicator

        public String argumentTypeIndicator()
        Description copied from interface: OptionDescriptor
        Gives an indication of the expected type of the option's argument.
        Returns:
        a description for the option's argument type
      • defaultValues

        public List<Void> defaultValues()
        Description copied from interface: OptionDescriptor
        What values will the option take if none are specified on the command line?
        Returns:
        any default values for the option