Scala 用scopt声明所需的子命令
我想使用scopt或类似的东西声明所需的子命令,但基于Scala 例如,我希望有以下与man git类似的概要,例如:Scala 用scopt声明所需的子命令,scala,command-line,scopt,Scala,Command Line,Scopt,我想使用scopt或类似的东西声明所需的子命令,但基于Scala 例如,我希望有以下与man git类似的概要,例如: mycli [--version] [--help] <command> [<args>] 有什么提示吗 提前感谢您的帮助 当然这有点棘手,它可能会导致很多级别的儿童选择 这是我的配置类: case class Config(cmd:String="", subcmd:String="") 这是我的解析器: val parser = new scop
mycli [--version] [--help] <command> [<args>]
有什么提示吗
提前感谢您的帮助 当然这有点棘手,它可能会导致很多级别的儿童选择 这是我的配置类:
case class Config(cmd:String="", subcmd:String="")
这是我的解析器:
val parser = new scopt.OptionParser[Config]("MyCLI") {
head("Foo")
cmd("cmdA") action { (_, c) => c.copy(cmd = "cmdA")
} children(
cmd("subA1") action { (_, c) => c.copy(subcmd = "subA1")},
cmd("subA2") action { (_, c) => c.copy(subcmd = "subA2")}
)
cmd("cmdB") action { (_, c) => c.copy(cmd = "cmdA")
} children(
cmd("subA1") action { (_, c) => c.copy(subcmd = "subA1")},
cmd("subA2") action { (_, c) => c.copy(subcmd = "subA2")}
)
checkConfig { c => c match {
case Config("", _) => failure("No command given.")
case Config(_, "") => failure("Must Choose a subcommand.")
case _ => success
}}
}
我希望这有帮助。我将用密封的trait和objects替换Config.cmd。我这么做不是为了让它可以被复制
每个子命令都可以有自己的子命令,以及其他命令、选项或参数
对checkConfig的调用非常重要,否则如果没有给出任何命令,应用程序将以静默方式退出。当然这有点棘手,它可能会导致很多级别的子选项 这是我的配置类:
case class Config(cmd:String="", subcmd:String="")
这是我的解析器:
val parser = new scopt.OptionParser[Config]("MyCLI") {
head("Foo")
cmd("cmdA") action { (_, c) => c.copy(cmd = "cmdA")
} children(
cmd("subA1") action { (_, c) => c.copy(subcmd = "subA1")},
cmd("subA2") action { (_, c) => c.copy(subcmd = "subA2")}
)
cmd("cmdB") action { (_, c) => c.copy(cmd = "cmdA")
} children(
cmd("subA1") action { (_, c) => c.copy(subcmd = "subA1")},
cmd("subA2") action { (_, c) => c.copy(subcmd = "subA2")}
)
checkConfig { c => c match {
case Config("", _) => failure("No command given.")
case Config(_, "") => failure("Must Choose a subcommand.")
case _ => success
}}
}
我希望这有帮助。我将用密封的trait和objects替换Config.cmd。我这么做不是为了让它可以被复制
每个子命令都可以有自己的子命令,以及其他命令、选项或参数
对checkConfig的调用非常重要,否则如果没有给出任何命令,应用程序将以静默方式退出。Hi Nicholas。感谢您的帮助,但是如何调整checkConfig以使MyCLI-version或MyCLI-help不会导致错误?我添加了一个版本。。。帮助。。。就在头后面。。。。其次,如何调整showUsage消息,例如sage:MyCLI[dump | move]。。。成为圣人:MyCLI。。。因为这些是必需的?嗨,尼古拉斯。感谢您的帮助,但是如何调整checkConfig以使MyCLI-version或MyCLI-help不会导致错误?我添加了一个版本。。。帮助。。。就在头后面。。。。其次,如何调整showUsage消息,例如sage:MyCLI[dump | move]。。。成为圣人:MyCLI。。。因为这些是必需的?