Завершение Кандидаты на позиционный параметр в picocli

Я пытаюсь обеспечить завершение для позиционных параметров. Где-то я заметил, что они не очень хорошо поддерживаются, но в настоящее время я не могу найти точное место в спецификации, и я не уверен, что это на самом деле означает.

Тем временем я обнаружил 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
  • поставить индекс в параметре

1 ответ

Ваш код выглядит хорошо. Текущее состояние (picocli 3.9.5) заключается в том, что завершение позиционного параметра работает в JLine, но не в bash/zsh.

Есть выдающийся элемент todo, чтобы это исправить. Кто-то отправил запрос на удаление для решения этой проблемы, но он имел проблему и не был объединен.

Вклад приветствуется!

Другие вопросы по тегам