【问题标题】:How do I specify default subcommand?如何指定默认子命令?
【发布时间】:2020-11-28 21:21:08
【问题描述】:

当用户没有提供子命令时,有没有办法打印帮助信息?

以下不起作用,因为它运行没有实现的可调用对象。

@Command(
        name = "tool",
        mixinStandardHelpOptions = true,
        subcommands = [ListPlugins::class, RunJob::class, CommandLine.HelpCommand::class])
class Main : Callable<Int> {

    override fun call(): Int {
//        CommandLine.HelpCommand().run()
        return 0
    }
}

【问题讨论】:

    标签: kotlin picocli


    【解决方案1】:

    换个说法:当用户没有指定子命令时如何显示帮助?

    从 picoli 4.3 版开始,您可以简单地在顶层命令上实现Callable;这使得用户必须指定子命令。 (这里假设您使用CommandLine.execute 来解析命令行并运行业务逻辑。)

    如果未指定子命令,则会显示“缺少所需的子命令”错误消息,然后是使用帮助消息。

    详情请见:https://picocli.info/#_required_subcommands

    这符合您的要求吗?

    【讨论】:

    • 感谢您的及时回复,Remko!
    【解决方案2】:

    是的,例如,您可以在没有命令行参数的情况下进行假调用。 (而不是 args-> --help) 并在它与参数之后,根据说明进行操作。 例如Java中的代码:

    CommandLine helpCL = new CommandLine(new Main());
    helpCL.execute(new String[]{"--help"});
    return new CommandLine(new Main()).execute(args);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 2022-11-01
      • 2015-04-19
      • 1970-01-01
      • 2018-08-15
      • 2017-11-27
      相关资源
      最近更新 更多