A composable command-line parser, inspired by optparse-applicative
and built on cats
.
import cats.implicits._
import com.monovore.decline._
object HelloWorld extends CommandApp(
name = "hello-world",
header = "Says hello!",
main = {
val userOpt =
Opts.option[String]("target", help = "Person to greet.")
.withDefault("world")
val quietOpt = Opts.flag("quiet", help = "Whether to be quiet.").orFalse
(userOpt, quietOpt).mapN { (user, quiet) =>
if (quiet) println("...")
else println(s"Hello $user!")
}
}
)
To get started, please visit monovore.com/decline!
decline
is a Typelevel Incubator project,
and follows the Typelevel Code of Conduct.
This project is released under the Apache License 2.0.