Comme j'ajoute de plus en plus mes scripts aux fichiers composer.json
, il serait utile d'avoir la saisie semi-automatique pour la commande composer
dans bash
. Ma question sur Twitter n'a pas donné de solution immédiate, et comme je faisais déjà quelque chose de similaire pour Phing
, j'ai retroussé mes manches et écrit ma solution.
Nous commençons par créer un nouveau fichier d' achèvement bash nommé composer
dans le répertoire bash_completion.d
(le fichier a besoin de droits d'exécution). Ce répertoire est généralement situé dans /etc/bash_completion.d/
, mais sous OS X utilisant Homebrew, il se trouve dans /usr/local/etc/bash_completion.d/
(en supposant que vous avez déjà installé brew install bash-complete
).
Voici le dossier:
(Notez que __ltrim_colon_completions
n'est pris en charge que dans les versions récentes de bash-complete
, vous devrez donc peut-être supprimer cette ligne.)
Pour obtenir une liste de commandes pour composer, nous créons une liste de mots pour l'option -W pour compgen
en exécutant composer --no-ansi
puis utilisons AWK pour supprimer tout ce qui n'est pas une commande. Nous créons également une liste d'arguments d'indicateur distincte lorsque l'utilisateur appuie sur la touche Tab après la saisie du trait d'union.
En exécutant composer {cmd} -h --no-ansi
, nous remplissons automatiquement les drapeaux pour toute sous-commande et, en utilisant tr
et grep
, restreignons la liste aux seuls mots commençant par un trait d'union.
Maintenant, en appuyant sur Tab après composer, bash terminera automatiquement à la fois les commandes de composition intégrées et les scripts utilisateur!

Comme vous pouvez le voir dans cet exemple, en plus des commandes intégrées, telles que dump-autoload
et show
, mes propres scripts sont affichés, y compris apiary-fetch
et d'autres.
C'est très utile lorsque la mémoire me fait défaut!