Package joptsimple

Class OptionSpecBuilder

  • All Implemented Interfaces:
    OptionDescriptor, OptionSpec<java.lang.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
     
    • Constructor Detail

      • OptionSpecBuilder

        OptionSpecBuilder​(OptionParser parser,
                          java.util.List<java.lang.String> options,
                          java.lang.String description)
    • Method Detail

      • attachToParser

        private void attachToParser()
      • withRequiredArg

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

        public ArgumentAcceptingOptionSpec<java.lang.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​(java.lang.String dependent,
                                            java.lang.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​(java.lang.String dependent,
                                                java.lang.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​(java.lang.String dependent,
                                             java.lang.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​(java.lang.String dependent,
                                                 java.lang.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 java.util.List<java.lang.String> validatedDependents​(java.lang.String dependent,
                                                                     java.lang.String... otherDependents)