libraryDependencies += "com.github.scopt" %% "scopt" % "4.0.1"
scala
import scopt.OParser
object Main {
case class Config(username: String = "", password: String = "", verbose: Boolean = false)
def main(args: Array[String]): Unit = {
}
}
scala
def main(args: Array[String]): Unit = {
val builder = OParser.builder[Config]
val parser = {
import builder._
OParser.sequence(
programName("my-program"),
head("my-program", "1.0"),
opt[String]('u', "username")
.action((value, config) => config.copy(username = value))
.text("username is a required string property"),
opt[String]('p', "password")
.action((value, config) => config.copy(password = value))
.text("password is a required string property"),
opt[Unit]('v', "verbose")
.action((_, config) => config.copy(verbose = true))
.text("enable verbose output"),
)
}
OParser.parse(parser, args, Config()) match {
case Some(config) =>
case _ =>
}
}
scala
OParser.parse(parser, args, Config()) match {
case Some(config) =>
println(s"Username: ${config.username}")
println(s"Password: ${config.password}")
println(s"Verbose mode: ${config.verbose}")
case _ =>
println("Invalid command line arguments")
}
scala
import scopt.OParser
object Main {
case class Config(username: String = "", password: String = "", verbose: Boolean = false)
def main(args: Array[String]): Unit = {
val builder = OParser.builder[Config]
val parser = {
import builder._
OParser.sequence(
programName("my-program"),
head("my-program", "1.0"),
opt[String]('u', "username")
.action((value, config) => config.copy(username = value))
.text("username is a required string property"),
opt[String]('p', "password")
.action((value, config) => config.copy(password = value))
.text("password is a required string property"),
opt[Unit]('v', "verbose")
.action((_, config) => config.copy(verbose = true))
.text("enable verbose output")
)
}
OParser.parse(parser, args, Config()) match {
case Some(config) =>
println(s"Username: ${config.username}")
println(s"Password: ${config.password}")
println(s"Verbose mode: ${config.verbose}")
case _ =>
println("Invalid command line arguments")
}
}
}
$ scala Main -u john.doe -p mypassword -v
Username: john.doe
Password: mypassword
Verbose mode: true
Invalid command line arguments