class OParser[A, C] extends AnyRef
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"), opt[Int]('f', "foo") .action((x, c) => c.copy(foo = x)) .text("foo is an integer property"), opt[File]('o', "out") .required() .valueName("<file>") .action((x, c) => c.copy(out = x)) .text("out is a required file property"), opt[(String, Int)]("max") .action({ case ((k, v), c) => c.copy(libName = k, maxCount = v) }) .validate(x => if (x._2 > 0) success else failure("Value <max> must be >0")) .keyValueName("<libname>", "<max>") .text("maximum count for <libname>"), opt[Seq[File]]('j', "jars") .valueName("<jar1>,<jar2>...") .action((x, c) => c.copy(jars = x)) .text("jars to include"), opt[Map[String, String]]("kwargs") .valueName("k1=v1,k2=v2...") .action((x, c) => c.copy(kwargs = x)) .text("other arguments"), opt[Unit]("verbose") .action((_, c) => c.copy(verbose = true)) .text("verbose is a flag"), opt[Unit]("debug") .hidden() .action((_, c) => c.copy(debug = true)) .text("this option is hidden in the usage text"), help("help").text("prints this usage text"), arg[File]("<file>...") .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( opt[Unit]("not-keepalive") .abbr("nk") .action((_, c) => c.copy(keepalive = false)) .text("disable keepalive"), opt[Boolean]("xyz") .action((x, c) => c.copy(xyz = x)) .text("xyz is a boolean property"), opt[Unit]("debug-update") .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 } }
Linear Supertypes
Ordering
- Alphabetic
- By Inheritance
Inherited
- OParser
- AnyRef
- Any
- Hide All
- Show All
Visibility
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
- def ++(other: OParser[_, C]): OParser[A, C]
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
abbr(x: String): OParser[A, C]
Adds short option -x.
-
def
action(f: (A, C) ⇒ C): OParser[A, C]
Adds a callback function.
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
children(cs: OParser[_, C]*): OParser[A, C]
Adds a parser under this command.
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
- def flatMap(f: (Unit) ⇒ OParser[_, C]): OParser[A, C]
- def foreach(f: (Unit) ⇒ Unit): Unit
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hidden(): OParser[A, C]
Hides the option in any usage text.
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
keyName(x: String): OParser[A, C]
Adds key name used in the usage text.
-
def
keyValueName(k: String, v: String): OParser[A, C]
Adds key and value names used in the usage text.
- def map(f: (Unit) ⇒ Unit): OParser[A, C]
-
def
maxOccurs(n: Int): OParser[A, C]
Allows the argument to appear at most
n
times. -
def
minOccurs(n: Int): OParser[A, C]
Requires the option to appear at least
n
times. -
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
optional(): OParser[A, C]
Chanages the option to be optional.
-
def
required(): OParser[A, C]
Requires the option to appear at least once.
-
def
subHead[B](head: OptionDef[B, C]): OParser[B, C]
- Attributes
- protected
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
text(x: String): OParser[A, C]
Adds description in the usage text.
- def toList: List[OptionDef[_, C]]
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
unbounded(): OParser[A, C]
Allows the argument to appear multiple times.
-
def
validate(f: (A) ⇒ Either[String, Unit]): OParser[A, C]
Adds custom validation.
-
def
valueName(x: String): OParser[A, C]
Adds value name used in the usage text.
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()