Завершение Кандидаты на позиционный параметр в 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, чтобы это исправить. Кто-то отправил запрос на удаление для решения этой проблемы, но он имел проблему и не был объединен.
Вклад приветствуется!