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.
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))
- Alphabetic
- By Inheritance
- cli
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- class CommandLine extends AnyRef
- case class CommandLineException(message: Option[String] = None, cause: Option[Throwable] = None) extends RuntimeException with Product with Serializable
- trait Converter[V] extends AnyRef
- case class FlagParameter(names: Set[String], description: String) extends Parameter[Boolean] with SingleValue[Boolean] with Product with Serializable
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. - case class HelpParameter(names: Set[String]) extends Parameter[Boolean] with SingleValue[Boolean] with Product with Serializable
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. - 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
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. - 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
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.
- trait MultipleValues[V] extends AnyRef
- sealed trait Parameter[V] extends AnyRef
- case class ParameterException(parameter: Parameter[_], message: Option[String] = None, cause: Option[Throwable] = None) extends RuntimeException with Product with Serializable
- trait SingleValue[V] extends AnyRef
- 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
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
- object CommandLine
- object Converter
- object MainParameter extends Serializable