首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >picocli中位置参数的补全候选

picocli中位置参数的补全候选
EN

Stack Overflow用户
提问于 2019-04-05 08:05:17
回答 1查看 400关注 0票数 2

我试图为位置参数提供完全性。在某个地方,我发现它们不是很好的支持,但目前我无法在规范中找到确切的位置,我也不知道这到底意味着什么。

同时,我在源代码中找到了CompletionCandidatesTest.java,这意味着它们在某种程度上得到了支持,或者至少已经准备好支持它。

这就是为什么我想知道他们是否工作,如果是的,我做错了什么。目前我在Groovy中的代码如下所示:

代码语言:javascript
复制
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命令:

代码语言:javascript
复制
java -cp "picocli-3.9.5.jar;tj.jar" picocli.AutoComplete -f -n tjtest com.some.package.TjTest
. tjtest_completion

它的作用就像一个选择的魅力。不幸的是,我无法使它的参数工作。我还试图:

  • 删除@选项,只保留@参数
  • 参数中的索引
EN

回答 1

Stack Overflow用户

发布于 2019-04-05 12:36:12

你的代码看起来很好。当前状态(picocli3.9.5)是位置参数完成在JLine中工作,而不是在bash/zsh中工作。

有一个出色的todo项目可以解决这个问题。有人提供了一个拉请求来解决这个问题,但是它有一个问题,还没有被合并。

欢迎捐款!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55530890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档