Packages

class ArgParser extends SettingsParser

A simple command line argument parser.

Usage

1. Define parameters with param, requiredParam, repeatedParam and command. Each of these methods gives back a handle to a future argument value.

2. Call parse() with actual arguments.

3. If parsing succeeds, the arguments will be available in the handles defined in step 1.

If parsing fails, error descriptions are printed and the program exits with 2. (This behaviour may be changed by subclassing and redefining the check() method).

Example

val parser = cmdr.ArgumentParser("appname", "0.1.0") val p1 =
parser.param[String]("--this-is-a-named-param", default = "default value")
val p2 = parser.param[Int]("positional-param", default = 2)
parser.parse(Seq("--this-is-a-named-param=other", 5)) println(p1())
println(p2())
Self Type
ArgParser
Linear Supertypes
SettingsParser, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ArgParser
  2. SettingsParser
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new ArgParser(prog: String, description: String, version: String, reporter: Reporter, env: Map[String, String])

    prog

    the name of this command (only used in the default help message)

    description

    a short description of this command. Used in help messages.

    version

    the verion of this app. Used in --version request.

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def addParamDef(pdef: ParamDef): Unit

    Low-level escape hatch for manually adding parameter definitions.

    Low-level escape hatch for manually adding parameter definitions.

    See also param, requiredParam and repeatedParam for the high-level API.

  5. def addParamInfo(pinfo: ParamInfo): Unit

    Low-level escape hatch for manually adding parameter information.

    Low-level escape hatch for manually adding parameter information.

    See also param, requiredParam and repeatedParam for the high-level API.

  6. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  7. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
  8. def command(name: String, action: (Seq[String]) => Unit, description: String = ""): Unit

    Utility to define a sub command.

    Utility to define a sub command.

    Many modern command line apps actually consist of multiple nested commands, each corresponding to the verb of an action, such as 'run' or 'clone'. Typically, each sub command also has its own dedicated parameters list.

    In cmdr, subcommands can easily be modelled by a positional parameter that represents the command, followed by a repeated, all-absorbing parameter which represents the command's arguments. However, since this pattern is fairly common, this method is provided as a shortcut.

    name

    the name of the command

    action

    a function called with the remaining arguments after this command. Note that you may reference an Arg's value in the action.

  9. val description: String
  10. val env: Map[String, String]
  11. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  12. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  13. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  14. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  15. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  16. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  17. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  18. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  19. def param[A](name: String, default: => A, env: String = null, aliases: Seq[String] = Seq.empty, help: String = "", flag: Boolean = false, absorbRemaining: Boolean = false, completer: Completer = null)(implicit reader: Reader[A]): () => A

    Define an optional parameter, using the given default value if it is not supplied on the command line or by an environment variable.

    Define an optional parameter, using the given default value if it is not supplied on the command line or by an environment variable.

    ErgoTip: always give named parameters a default value.

    Internal design note: param and requiredParam differ only in the presence of the 'default' parameter. Ideally, they would be merged into one single method, giving the 'default' parameter a default null value (as is done for the other optional parameters, such as 'env' and 'help'). Unfortunately, since 'default' is of type A where A may be a primitive type, it cannot be assigned null. The usual solution would be to wrap it in an Option type, but that leads to an ugly API. Hence the method is split into two. See addParam() for the common denominator.

    A

    The type to which an argument shall be converted.

    name

    The name of the parameter. A name starting with - indicates a named parameter, whereas any other name indicates a positional parameter. Prefer double-dash named params. I.e. prefer "--foo" over "-foo".

    default

    The default value to use in case no matching argument is provided.

    env

    The name of an environment variable from which to read the argument in case it is not supplied on the command line. Set to 'null' to ignore.

    aliases

    Other names that may be used for this parameter. This is a good place to define single-character aliases for frequently used named parameters. Note that this has no effect for positional parameters.

    help

    A help message to display when the user types --help

    flag

    Set to true if the parameter should be treated as a flag. Flags are named parameters that are treated specially by the parser: - they never take arguments, unless the argument is embedded in the flag itself - they are always assigned the string value "true" if found on the command line Note that flags are intended to make it easy to pass boolean parameters; it is quite rare that they are useful for non-boolean params. The flag field has no effect on positional parameters.

    absorbRemaining

    Indicates that any arguments encountered after this parameter must be treated as positionals, even if they start with -. In other words, a parameter marked with this has the same effect as the -- separator. It can be useful for implementing sub-commands. (Note however that this ArgParser has a dedicated command method for such use cases)

    completer

    A bash snippet that is inserted in bash-completions, responsible for setting completion options for this param. If omitted, the parameter type's (A) default completer will be used. If present, this must be valid bash and should set COMPREPLY. The bash variable "$cur" may be used in the snippet, and will contain the current word being completed for this parameter.

    returns

    A handle to the parameter's future value, available once parse(args) has been called.

  20. def parseOrExit(args: Iterable[String]): Unit

    Parse the given arguments with respect to the parameters defined by param, requiredParam, repeatedParam and command.

    Parse the given arguments with respect to the parameters defined by param, requiredParam, repeatedParam and command.

    In case no errors are encountered, the arguments will be populated in the functions returned by the parameter definitions.

    In case errors are encountered, the default behaviour is to exit the program.

    The classes of errors are:

    1. An unknown argument is encountered. This can either be an unspecified named argument or an extranous positional argument.

    2. A required argument is missing.

    3. An argument cannot be parsed from its string value to its desired type.

    See also

    parseResult for a version of this function which does not exit

  21. def parseResult(args0: Iterable[String]): Result

    Parse the given arguments with respect to the parameters defined by param, requiredParam, repeatedParam and command.

  22. val prog: String
  23. def repeatedParam[A](name: String, aliases: Seq[String] = Seq.empty, help: String = "", flag: Boolean = false, completer: Completer = null)(implicit reader: Reader[A]): () => Seq[A]

    Define a parameter that may be repeated.

    Define a parameter that may be repeated.

    Note that all named parameters may always be repeated, regardless if they are defined as repeated or not. The difference is that for non-repeat-defined parameters the last value is used, whereas repeat-defined parameters accumulate values. (This is why repeatedParam takes an A but gives back a Seq[A], while other params take A and give back A).

    E.g. consider the command line --foo=1 --foo=2 --foo=3

    In case foo is a regular named parameter, then, after parsing, the value will be 3. In case it is defined as a repeating parameter, its value will be Seq(1,2,3).

    Repeated positional parameters consume all remaining positional command line arguments.

  24. val reporter: Reporter
  25. def requiredParam[A](name: String, env: String = null, aliases: Seq[String] = Seq.empty, help: String = "", flag: Boolean = false, absorbRemaining: Boolean = false, completer: Completer = null)(implicit reader: Reader[A]): () => A

    Define a required parameter.

    Define a required parameter.

    This method is similar to param, except that it does not accept a default value. Instead, missing arguments for this parameter will cause the parser to fail.

    ErgoTip: avoid named parameters that are required. Only require positional parameters.

    See also

    param

  26. def singleParam[A](name: String, default: Option[() => A], env: Option[String], aliases: Seq[String], help: String, flag: Boolean, absorbRemaining: Boolean, completer: Option[Completer])(implicit reader: Reader[A]): () => A
  27. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  28. def toString(): String
    Definition Classes
    AnyRef → Any
  29. val version: String
  30. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  31. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  32. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated
  2. def parse(args: Array[String]): Unit
    Annotations
    @deprecated
    Deprecated

    (Since version 0.7.2) use parseOrExit instead

  3. def parse(args: Seq[String]): Unit
    Annotations
    @deprecated
    Deprecated

    (Since version 0.7.2) use parseOrExit instead

Inherited from SettingsParser

Inherited from AnyRef

Inherited from Any

Ungrouped