2014-11-17 2 views
18

Кто-нибудь смог настроить автозаполнение для AWS CLI с рыбной раковиной? Документация AWS предлагает только руководство для bash, tcsh и zsh.Завершение команды AWS CLI с рыбным снарядом

Bash экспортирует переменные COMP_LINE и COMP_POINT, которые используются скриптом aws_completer, предоставленным Amazon. Есть ли эквивалент для рыбы? Я новичок в рыбной раковине, и я даю ему попробовать.

+2

Рыба поддерживает доработки, используя свой собственный ['complete'] (http://fishshell.com/docs/current/commands.html#complete). Подробнее об этом читайте в [Написание собственных доработок] (http://fishshell.com/docs/current/index.html#completion -own). Я не настраиваю AWS CLI на Fish, но для [look of it] (http://docs.aws.amazon.com/cli/latest/userguide/cli-command-completion.html) вам нужно будет написать ваш собственный файл завершения. См. [Здесь] (https://github.com/bpinto/oh-my-fish/blob/master/plugins/git-flow/completions/git.fish) для примера о том, как писать доработки. –

ответ

0

На самом деле можно нарисовать завершение баша для рыб.

См. the npm completions.

Однако, вероятно, еще лучше написать настоящий рыбный скрипт (это не сложно!).

1

Хотя предоставленный ответ не отвечает на вопрос непосредственно об использовании fish; Я намерен предоставить ответ на помощь в контексте auto-completion & shell.

Amazon запустил новый инструмент на базе CLI, раздвоенный из AWSCLI. [https://aws.amazon.com/blogs/developer/super-charge-your-aws-command-line-experience-with-aws-shell/]

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

Fuzzy автозавершения

  • команды (например, ec2, описывают-экземпляры, смс, создавать очереди)
  • параметры (например, --instance идентификаторы, --queue-URL)
  • идентификаторы ресурсов (например, идентификаторы Amazon EC2 экземпляра, URL очереди Amazon SQS, название темы Amazon SNS) enter image description here

Dynamic рядный документация

  • Документация для команд и опций отображаются при вводе enter image description here

Выполнение OS оболочки команды

  • Используйте команды общего ОС, такие как cat, ls, cp и входы и выходы, не выходя из корпуса enter image description here
  • Экспорт выполненных команд в текстовый редактор Чтобы узнать больше, ознакомьтесь с соответствующим сообщением в блоге по телефону AWS Command Line Interface blog.

enter image description here

3

Я также хочу, чтобы получить его на работу, и я сделал некоторый прогресс, но он не идеален.

Прежде всего, я смотрю некоторые советы от here, которые помогают показать, как эмулировать переменные среды bash, которые ожидает as_completer.

Собирает вместе, я получаю это:

complete -c aws -f -a '(begin; set -lx COMP_SHELL fish; set -lx COMP_LINE (commandline); /usr/local/bin/aws_completer; end)' 

Это в основном работает, но я получаю паразитный дополнительный слэш, так что если я пытаюсь выполнить «AWS EC2 описывает-экземпляры -» я получаю:

[email protected] ~> aws ec2 describe-instances -- 
--ca-bundle\    --color\   --filters\    --no-dry-run\  --output\  --region\ 
--cli-connect-timeout\ --debug\   --generate-cli-skeleton --no-paginate\  --page-size\ --starting-token\ 
--cli-input-json\  --dry-run\  --instance-ids\   --no-sign-request\ --profile\  --version\ 
--cli-read-timeout\  --endpoint-url\ --max-items\    --no-verify-ssl\  --query\ 

Он смотрит на меня, как есть конечные пробелы голец, но я попытался удалить его с помощью СЭД:

complete -c aws -f -a '(begin; set -lx COMP_SHELL fish; set -lx COMP_LINE (commandline); echo (/usr/local/bin/aws_completer | sed -e \'s/[ ]*//\') ; end)' 

Но это, похоже, не помогает. Кажется, что рыба ожидает другого выходного формата, чем bash, потому что он является полным. И действительно, doe говорит, что он ожидает список, разделенный пробелом.

Так что я попытался присоединиться к линии с xargs:

complete -c aws -f -a '(begin; set -lx COMP_SHELL fish; set -lx COMP_LINE (commandline); echo (/usr/local/bin/aws_completer | sed -e \'s/[ ]*//\') | xargs echo ; end)' 

Но это не работает. Я просто получаю одно завершение

Это раздражает, я так близко, но это не сработает!

+0

@ridiculous_fish У вас есть идеи по этому поводу? –

+0

Новый вопрос? Насколько я знаю, pinging кто-то под вашим ответом, как выше, делает их слепыми к факту – Drew

+2

Использование sed для удаления зацикливающегося символа пробела для меня работало, но вы не хотите использовать под-оболочку рыбы при выполнении этого, так как это заканчивается конкатенацией вывода в один гигантский аргумент. Это сработало для меня: 'complete --command aws --no-files --arguments '(begin; set --local --export COMP_SHELL fish; set --local --export COMP_LINE (commandline);/usr/local/bin/aws_completer | sed \ 's/$ // \'; end) '' –

0

Команда, которую я использую в своей virtualenv/бен/активировать это:

complete -C aws_completer aws 

Похоже AWS-кли имеет поддержку рыбы тоже. Существует комплектный установщик с aws-cli, который стоит проверить: activate.fish. Я нашел его в том же каталоге bin, что и команда aws.

Смежные вопросы