【问题标题】:completion Candidates for positional parameter in picocli完成picocli中位置参数的候选者
【发布时间】:2019-08-27 02:12:27
【问题描述】:

我正在尝试为位置参​​数提供补全。 在某处我发现它们没有得到很好的支持,但目前我无法在规范中找到确切的位置,我不确定这真正意味着什么。

与此同时,我在来源中发现了 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
  • 将索引放入参数中

【问题讨论】:

    标签: positional-parameter picocli


    【解决方案1】:

    您的代码看起来不错。当前状态(picocli 3.9.5)是位置参数完成在JLine 中有效,但在 bash/zsh 中无效。

    有一个出色的todo item 来解决这个问题。有人贡献了pull request 来解决这个问题,但它有一个问题并且没有被合并。

    欢迎投稿!

    【讨论】:

      猜你喜欢
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多