我尝试实现自己的 CLI,并希望使用 picocli 来解析命令的参数。这就是为什么我根本不希望 picocli 在控制台中写入。所以我创建了MyCommand
带有一些选项和参数注释的类。现在我希望能够做这样的事情:
val myCommand = CommandLine.populateCommand(MyCommand(), args)
myCommand.execute();
val output = myCommand.getOutput();
val errors: List<String> = myCommand.getErrors();
前三行没有问题,但我不确定如何处理第四行。现在populateCommand
只是抛出所有异常,捕获它们不是一种选择,因为抛出的异常将停止我的管道计算。Picocli 文档建议对要存储的异常使用解析器宽松模式ParseResult
,但这意味着我必须使用commandLine.parseWithHandlers
难以满足我需求的方法。
我错过了什么吗?也许我可以使用populateCommand
并将异常存储在某个地方?
这是populateCommand
引发的异常之一的堆栈跟踪:
Exception in thread "main" picocli.CommandLine$MissingParameterException: Missing required parameter for option '-A' (<afterContext>)
at picocli.CommandLine$Interpreter.assertNoMissingParameters(CommandLine.java:8059)
at picocli.CommandLine$Interpreter.applyOption(CommandLine.java:7534)
at picocli.CommandLine$Interpreter.processStandaloneOption(CommandLine.java:7446)
at picocli.CommandLine$Interpreter.processArguments(CommandLine.java:7355)
at picocli.CommandLine$Interpreter.parse(CommandLine.java:7226)
at picocli.CommandLine$Interpreter.parse(CommandLine.java:7116)
at picocli.CommandLine.parse(CommandLine.java:824)
at picocli.CommandLine.populateCommand(CommandLine.java:777)