2019-01-02 18:55:26 +08:00
|
|
|
/*
|
2021-01-08 17:55:38 +01:00
|
|
|
* Copyright (C) 2009-2021 Lightbend Inc. <https://www.lightbend.com>
|
2015-05-21 09:48:49 +03:00
|
|
|
*/
|
2018-03-13 23:45:55 +09:00
|
|
|
|
2015-05-21 09:48:49 +03:00
|
|
|
package akka
|
|
|
|
|
|
|
|
|
|
case class CliOption[T](private val value: T) {
|
|
|
|
|
def get: T = value
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
object CliOption {
|
|
|
|
|
def apply[T](path: String, default: T)(implicit ev: CliOptionParser[T]): CliOption[T] = ev.parse(path, default)
|
|
|
|
|
|
|
|
|
|
implicit class BooleanCliOption(cliOption: CliOption[Boolean]) {
|
2019-02-09 15:25:39 +01:00
|
|
|
def ifTrue[A](a: => A): Option[A] = if (cliOption.get) Some(a) else None
|
2015-05-21 09:48:49 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
trait CliOptionParser[T] {
|
|
|
|
|
def parse(path: String, default: T): CliOption[T]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
object CliOptionParser {
|
|
|
|
|
implicit object BooleanCliOptionParser extends CliOptionParser[Boolean] {
|
|
|
|
|
def parse(path: String, default: Boolean) =
|
|
|
|
|
CliOption(sys.props.getOrElse(path, default.toString).toBoolean)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|