Package

de.h2b.scala.lib.util

cli

Permalink

package cli

Define the parameters of your command line as instances of

- FlagParameter: no specific value, just signals that it is there,

- HelpParameter: signals that the user needs some help (if given as a command-line argument, other parameters are not computed and no parse exceptions are thrown),

- ValueParameter[V]: has exactly one value of type V,

- ListParameter[V]: has a number of values of type V and

- MainParameter: has a number of String values.

ValueParameter[V] and ListParameter[V] need a converter to convert a string to the value type V. You might want to import the object Converter that provides converters for standard data types implicitly by:

import de.h2b.scala.lib.util.cli.Converter._

Then create a new instance of CommandLine with a set of parameters. The resulting object then can parse a string sequence or an array of strings for parameters and their values. If something goes wrong, either a ParameterException (some argument does not obey to the format specified by its parameter) or a CommandLineException (something is wrong with the arguments as a whole) is thrown.

Finally query the original parameter instances for its value or values field.

The usage method of CommandLine constructs a string suitable for a usage message.

Example:
  1. import de.h2b.scala.lib.util.cli._
    import de.h2b.scala.lib.util.cli.Converter._
    val overwrite = FlagParameter(Set("-o", "--overwrite"), "overwrite target")
    val mode = ValueParameter(Set("-m"), "mode", default=Some(0))
    val main = MainParameter("source target", arity=2)
    CommandLine(Set(overwrite, mode, main)).parse("-o -m 1 from to".split(' '))
    println(overwrite.value) //> Some(true)
    println(mode.value) //> Some(1)
    println(main.values) //> Some(WrappedArray(from, to))
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. cli
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. class CommandLine extends AnyRef

    Permalink
  2. case class CommandLineException(message: Option[String] = None, cause: Option[Throwable] = None) extends RuntimeException with Product with Serializable

    Permalink
  3. trait Converter[V] extends AnyRef

    Permalink
  4. case class FlagParameter(names: Set[String], description: String) extends Parameter[Boolean] with SingleValue[Boolean] with Product with Serializable

    Permalink

    A flag parameter has no specific value, it just signals that it is there.

    A flag parameter has no specific value, it just signals that it is there.

    If its value is defined, it is present in the command line, else it is not.

  5. case class HelpParameter(names: Set[String]) extends Parameter[Boolean] with SingleValue[Boolean] with Product with Serializable

    Permalink

    Signals that the user needs some help.

    Signals that the user needs some help.

    If a help-parameter name is given as a command-line argument, other parameters are not computed and no parse exceptions are thrown.

    If its value is defined, it is present in the command line, else it is not.

  6. case class ListParameter[V](names: Set[String], description: String, arity: Int, required: Boolean = false, defaults: Option[Seq[V]] = None)(implicit convert: (String) ⇒ Try[V]) extends Parameter[V] with MultipleValues[V] with Converter[V] with Product with Serializable

    Permalink

    A list parameter has a number of values specified by its arity.

    A list parameter has a number of values specified by its arity.

    The values can be retrieved as a sequence by the values option.

  7. case class MainParameter(description: String, arity: Int, required: Boolean = false, defaults: Option[Seq[String]] = None) extends Parameter[String] with MultipleValues[String] with Product with Serializable

    Permalink

    A main parameter has a number of values specified by its arity.

    A main parameter has a number of values specified by its arity.

    The values can be retrieved as a sequence by the values option.

    A main parameter is different from a list parameter by the absence of a name in the command line. There is, however, an internal name (MainParameter.internalName) that can be used in the command line to avoid ambiguities.

    Main-parameter values can be given at the beginning or at the end of the arguments sequence (or both mixed up, but that may be confusing). Beware, that values at the end might be consumed by a variable-arity parameter in a position right before.

  8. trait MultipleValues[V] extends AnyRef

    Permalink
  9. sealed trait Parameter[V] extends AnyRef

    Permalink
  10. case class ParameterException(parameter: Parameter[_], message: Option[String] = None, cause: Option[Throwable] = None) extends RuntimeException with Product with Serializable

    Permalink
  11. trait SingleValue[V] extends AnyRef

    Permalink
  12. case class ValueParameter[V](names: Set[String], description: String, required: Boolean = false, default: Option[V] = None)(implicit convert: (String) ⇒ Try[V]) extends Parameter[V] with SingleValue[V] with Converter[V] with Product with Serializable

    Permalink

    A value parameter has exactly one value.

    A value parameter has exactly one value.

    The value can be retrieved by the value option.

Value Members

  1. object CommandLine

    Permalink
  2. object Converter

    Permalink
  3. object MainParameter extends Serializable

    Permalink

Inherited from AnyRef

Inherited from Any

Ungrouped