Question Achèvement de la commande AWS CLI avec fish shell


Quelqu'un a-t-il pu configurer l'auto-complétion pour l'AWS CLI avec le shell de poisson? La documentation AWS propose uniquement le guide pour bash, tcsh et zsh.

Bash exporte les variables COMP_LINE et COMP_POINT utilisé par le script aws_completer fourni par Amazon. Y a-t-il un équivalent pour le poisson? Je suis nouveau avec la coquille de poisson et je fais un essai.


18
2017-11-17 20:38


origine


Réponses:


Je veux aussi que son travail fonctionne, et j'ai fait des progrès, mais ce n'est pas parfait.

D'abord je cherche des conseils de ici ce qui aide à simuler les variables d'environnement bash attendues par as_completer.

En l'assemblant, j'obtiens ceci:

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

Cela fonctionne principalement, mais je reçois des barres obliques supplémentaires, alors si j'essaie de terminer "aws ec2 describe-instances -" j'obtiens:

dave@retino ~> 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\

Il me semble qu'il y a un caractère d'espacement blanc, mais j'ai essayé de le supprimer en utilisant sed:

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)'

Mais cela ne semble pas aider. Il semble que fish attend un format de sortie différent de celui de bash. Et en effet le décimation de poisson pour le montage complet doe dire qu'il attend une liste séparée par des espaces.

J'ai donc essayé de joindre les lignes avec 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)'

Mais cela ne fonctionne pas non plus. Je viens juste d'avoir un achèvement

C'est agaçant, je suis si proche, mais ça ne marche pas!


3
2018-01-07 11:56



Bien que la réponse fournie ne réponde pas directement à la question de l'utilisation fish; J'ai l'intention de fournir une réponse pour aider dans le contexte de auto-completion Et shell.

Amazon a lancé un nouvel outil basé sur CLI basé sur AWSCLI. [https://aws.amazon.com/blogs/developer/super-charge-your-aws-command-line-experience-with-aws-shell/]

aws-shell est un programme shell de ligne de commande qui offre une commodité   fonctionnalités de productivité pour aider les utilisateurs nouveaux et avancés du   Interface de ligne de commande AWS. Les principales caractéristiques comprennent les suivantes.

Auto-complétion floue 

  • Commandes (par exemple, ec2, describe-instances, sms, create-queue)
  • Options (par exemple --instance-ids, --queue-url)
  • Identificateurs de ressources (par exemple, ID d'instance Amazon EC2, URL de file d'attente Amazon SQS, noms de rubrique Amazon SNS)    enter image description here

Documentation en ligne dynamique 

  • La documentation des commandes et des options est affichée au fur et à mesure que vous tapez    enter image description here

Exécution des commandes du shell OS 

  • Utilisez les commandes communes du système d'exploitation telles que les entrées et sorties cat, ls et cp et pipe sans quitter le shell    enter image description here
  • Exportation de commandes exécutées vers un éditeur de texte Pour en savoir plus, consultez l'article sur le blog correspondant. Blog de l'interface de ligne de commande AWS.

enter image description here


1
2018-01-05 09:07



Il est effectivement possible de cartographier l'achèvement de bash pour les poissons.

Voir les finitions npm.

Cependant, il est probablement préférable d'écrire un vrai script de poisson (ce n'est pas difficile!).


0
2017-09-29 15:23



La commande que j'utilise dans mon virtualenv / bin / activate est la suivante:

complete -C aws_completer aws

On dirait que aws-cli a aussi du poisson. Il existe un programme d’installation fourni avec aws-cli qui peut s’avérer utile: activate.fish. Je l'ai trouvé dans le même répertoire bin que la commande aws.


0
2018-03-29 03:34