4

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

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

@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
    }
}
4

2 回答 2

2

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

从 picoli 4.3 版开始,您可以根本执行Callable顶级命令;这使得用户必须指定子命令。(这里假设你CommandLine.execute用来解析命令行并运行业务逻辑。)

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

有关详细信息,请参阅:https ://picocli.info/#_required_subcommands 。

这符合你的要求吗?

于 2020-11-28T21:47:32.773 回答
0

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

CommandLine helpCL = new CommandLine(new Main());
helpCL.execute(new String[]{"--help"});
return new CommandLine(new Main()).execute(args);
于 2021-05-16T21:24:23.940 回答