Завершение Кандидаты на позиционный параметр в picocli - PullRequest
1 голос
/ 05 апреля 2019

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

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

1 Ответ

0 голосов
/ 05 апреля 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...