我正在尝试为位置参数提供补全。在某个地方我发现它们没有得到很好的支持,但目前我无法在规范中找到确切的位置,我不确定这真正意味着什么。
与此同时,我在来源中发现了 CompletionCandidatesTest.java,这表明它们以某种方式受到支持,或者至少准备支持它。
这就是为什么我想知道它们是否有效,如果有效,我做错了什么。目前我在 Groovy 中的代码如下所示:
package com.some.package
import picocli.CommandLine
import picocli.CommandLine.Command
@Command
class TjTest implements Runnable {
static class TjTestCandidates implements Iterable<String> {
@Override
Iterator<String> iterator() {
return Arrays.asList("aaaa", "bbbb", "cccc", "dddd", "eeeee", "ffff").iterator()
}
}
@CommandLine.Option(names = "-x", completionCandidates = TjTestCandidates)
String x;
@CommandLine.Parameters(completionCandidates = TjTestCandidates)
String param;
@Override
public void run() {
println "Start"
println x
println param;
println "Stop"
}
public static void main(String[] args) {
CommandLine.run(new TjTest(), args);
}
}
我执行了如下所需的 bash 命令:
java -cp "picocli-3.9.5.jar;tj.jar" picocli.AutoComplete -f -n tjtest com.some.package.TjTest
. tjtest_completion
它就像一个选项的魅力。不幸的是,我无法使其适用于参数。我也试图:
- 删除 @Option 并仅保留 @Parameters
- 将索引放入参数