Bash / php – tout moyen d’implémenter la saisie semi-automatique des tabulations pour les arguments?

J’ai un script de ligne de commande PHP qui lance un travail sur un Job Server, le nom du travail étant un argument. Les noms de travail sont nommés, tels que Foo: Bar_Baz_JobName. Y a-t-il un moyen d’implémenter l’auto-complétion, comme comment taper les premières lettres d’un nom de fichier et appuyer sur l’onglet bash complète le nom de fichier pour vous. Je sais que cela peut être fait, car l’achèvement de tabulation fonctionne sur Ubuntu avec apt-get, je ne sais pas si cela peut être fait en PHP.

La complétion automatique est effectuée à l’aide de la bibliothèque readline GNU, qui est apparemment accessible à partir de PHP. Spécifiquement, regardez readline_completion_function . L’utilisation est assez simple vous appelez readline_completion_function avec un argument, une fonction de rappel qui gère l’achèvement. La fonction callback prend les premières lettres (en gros, tout ce que vous tapez avant d’appuyer sur TAB) en tant qu’entrée et devrait renvoyer un tableau de correspondances possibles.

Oui! vous pouvez le faire en PHP!

CLIFramework fournit une commande qui vous aide à générer le script d’achèvement de bash par vos définitions de commandes.

Vous pouvez également définir l’achèvement de votre argument en PHP, la complétion bash / zsh générée renverra le résultat de l’exécution de PHP à l’exécution:

https://github.com/c9s/CLIFramework

Screencast (bash):

entrer la description de l'image ici

Screencast (zsh):

entrer la description de l'image ici

Vous pouvez essayer d’utiliser readline , plus spécifiquement, la fonction readline_completion_function .

A propos de readline_completion_function

Je dirais qu’en considérant le type d’interaction que vous recherchez (apt-get autocomplete), cette méthode n’est pas bonne.

En fait, avant d’obtenir une fonction de saisie semi-automatique, vous devez exécuter le script et accéder à la fonction de saisie semi-automatique.

La fonction de saisie semi-automatique est partielle. Donc, comme le bash autocomplete pas le zsh.

Dans la coquille:

 ➜ ~ php test.php (enter) Custom command: (tab) abc Custom command: (tab) abc 

Le code est le suivant:

 actionCompl(); 

À propos de l’auto-complétion du temps d’exécution

Comme suggéré par c9s, il est possible d’obtenir ce type de fonctionnalité, mais en extending fonctionnalité d’ auto-complétion de votre base, pas avec PHP.

Ainsi, si vous voyez la fonction d’autocomplétion de CLIFramework par exemple, vous verrez:

 BashGenerator.php ZshGenerator.php 

Qui est utilisé pour générer le script bash pour étendre l’autocomplétion bash ou zsh.

Donc, cela dépend du shell que vous utilisez de la manière dont vous devez effectuer la saisie semi-automatique.

Quelques références:

  • auto-complétion zsh
  • autocomplétion bash
  • autocomplétion du poisson (le lien est plus orienté python que php …)