scopt

package scopt

Type members

Classlikes

abstract class DefaultOEffectSetup extends OEffectSetup
abstract class DefaultOParserSetup extends OParserSetup
sealed trait OEffect
Companion
object
object OEffect
Companion
class
class OParser[A, C](head: OptionDef[A, C], rest: List[OptionDef[, C]])
A monadic commandline options parser.
{{{
import scopt.OParser
val builder = OParser.builder[Config]
val parser1 = {
import builder._
OParser.sequence(
programName("scopt"),
head("scopt", "4.x"),
optInt
.action((x, c) => c.copy(foo = x))
.text("foo is an integer property"),
optFile
.required()
.valueName("")
.action((x, c) => c.copy(out = x))
.text("out is a required file property"),
opt(String, Int)
.action({ case ((k, v), c) => c.copy(libName = k, maxCount = v) })
.validate(x =>
if (x.2 > 0) success
else failure("Value must be >0"))
.keyValueName("", "")
.text("maximum count for "),
optSeq[File]
.valueName(",...")
.action((x, c) => c.copy(jars = x))
.text("jars to include"),
optMap[String, String]
.valueName("k1=v1,k2=v2...")
.action((x, c) => c.copy(kwargs = x))
.text("other arguments"),
optUnit
.action((, c) => c.copy(verbose = true))
.text("verbose is a flag"),
optUnit
.hidden()
.action((, c) => c.copy(debug = true))
.text("this option is hidden in the usage text"),
help("help").text("prints this usage text"),
argFile
.unbounded()
.optional()
.action((x, c) => c.copy(files = c.files :+ x))
.text("optional unbounded args"),
note("some notes." + sys.props("line.separator")),
cmd("update")
.action((, c) => c.copy(mode = "update"))
.text("update is a command.")
.children(
optUnit
.abbr("nk")
.action((, c) => c.copy(keepalive = false))
.text("disable keepalive"),
optBoolean
.action((x, c) => c.copy(xyz = x))
.text("xyz is a boolean property"),
optUnit
.hidden()
.action((, c) => c.copy(debug = true))
.text("this option is hidden in the usage text"),
checkConfig(
c =>
if (c.keepalive && c.xyz) failure("xyz cannot keep alive")
else success)
)
)
}
// OParser.parse returns Option[Config]
OParser.parse(parser1, args, Config()) match {
case Some(config) =>
// do something
case _ =>
// arguments are bad, error message will have been displayed
}
// alternatively, use OParser.runParser returns (Option[Config] , List[OEffect] )
OParser.runParser(parser1, args, Config()) match {
case (result, effects) =>
OParser.runEffects(effects, new DefaultOEffectSetup {
// override def displayToOut(msg: String): Unit = Console.out.println(msg)
// override def displayToErr(msg: String): Unit = Console.err.println(msg)
// override def reportError(msg: String): Unit = displayToErr("Error: " + msg)
// override def reportWarning(msg: String): Unit = displayToErr("Warning: " + msg)
 // ignore terminate
 override def terminate(exitState: Either[String, Unit]): Unit = ()
})
result match {
Some(config) =>
// do something
case _ =>
// arguments are bad, error message will have been displayed
}
}
}}}
Companion
object
object OParser
Companion
class
abstract class OParserBuilder[C]
class OptionDef[A, C](_id: Int, _kind: OptionDefKind, _name: String, _shortOpt: Option[String], _keyName: Option[String], _valueName: Option[String], _desc: String, _action: (A, C) => C, _validations: Seq[A => Either[String, Unit]], _configValidations: Seq[C => Either[String, Unit]], _parentId: Option[Int], _minOccurs: Int, _maxOccurs: Int, _isHidden: Boolean, _fallback: Option[() => A], _defCallback: OptionDefCallback[C])(evidence$1: Read[A])
abstract class OptionDefCallback[C]
Companion
object
Companion
class
abstract class OptionParser[C](programName: String) extends OptionDefCallback[C]
scopt.immutable.OptionParser is instantiated within your object,
set up by an (ordered) sequence of invocations of
the various builder methods such as
opt method or
arg method.
{{{
val parser = new scopt.OptionParserConfig {
head("scopt", "4.x")
optInt.action( (x, c) =>
c.copy(foo = x) ).text("foo is an integer property")
optFile.required().valueName("").
action( (x, c) => c.copy(out = x) ).
text("out is a required file property")
opt(String, Int).action({
case ((k, v), c) => c.copy(libName = k, maxCount = v) }).
validate( x =>
if (x._2 > 0) success
else failure("Value must be >0") ).
keyValueName("", "").
text("maximum count for ")
optSeq[File].valueName(",...").action( (x,c) =>
c.copy(jars = x) ).text("jars to include")
optMap[String,String].valueName("k1=v1,k2=v2...").action( (x, c) =>
c.copy(kwargs = x) ).text("other arguments")
optUnit.action( (_, c) =>
c.copy(verbose = true) ).text("verbose is a flag")
optUnit.hidden().action( (_, c) =>
c.copy(debug = true) ).text("this option is hidden in the usage text")
help("help").text("prints this usage text")
argFile.unbounded().optional().action( (x, c) =>
c.copy(files = c.files :+ x) ).text("optional unbounded args")
note("some notes.".newline)
cmd("update").action( (, c) => c.copy(mode = "update") ).
text("update is a command.").
children(
optUnit.abbr("nk").action( (, c) =>
c.copy(keepalive = false) ).text("disable keepalive"),
optBoolean.action( (x, c) =>
c.copy(xyz = x) ).text("xyz is a boolean property"),
optUnit.hidden().action( (_, c) =>
c.copy(debug = true) ).text("this option is hidden in the usage text"),
checkConfig( c =>
if (c.keepalive && c.xyz) failure("xyz cannot keep alive")
else success )
)
}
// parser.parse returns Option[C]
parser.parse(args, Config()) match {
case Some(config) =>
// do stuff
case None =>
// arguments are bad, error message will have been displayed
}
}}}
trait Read[A]
Companion
object
object Read extends PlatformReadInstances
Companion
class
Companion
object
Companion
class
object Validation