A port of the optparse-applicative library to the Scala programming language.
Most functionality has been ported, except completion.
This library depends on Scalaz for functional data structures, type classes and combinators.
for jvm
libraryDependencies += "com.github.xuwei-k" %% "optparse-applicative" % "0.9.4"
for scala-js, scala-native
libraryDependencies += "com.github.xuwei-k" %%% "optparse-applicative" % "0.9.4"
This library is distributed under a BSD 3-Clause license (see LICENSE
).
This example follows the one from the optparse-applicative docs.
case class Sample(hello: String, quiet: Boolean)
object SampleMain {
val sample: Parser[Sample] =
^(
strOption(long("hello"), metavar("TARGET"), help("Target for the greeting")),
switch(long("quiet"), help("Whether to be quiet"))
)(Sample.apply)
def greet(s: Sample): Unit = s match {
case Sample(h, false) => println("Hello, " ++ h)
case _ =>
}
def main(args: Array[String]): Unit = {
val opts = info(sample <*> helper,
progDesc("Print a greeting for TARGET"),
header("hello - a test for scala-optparse-applicative"))
greet(execParser(args, "SampleMain", opts))
}
}
When run with the --help
option, it prints:
hello - a test for scala-optparse-applicative
Usage: SampleMain --hello TARGET [--quiet]
Print a greeting for TARGET
Available options:
-h,--help Show this help text
--hello TARGET Target for the greeting
--quiet Whether to be quiet