Da ich meine Skripte immer mehr zu composer.json
Dateien hinzufüge, wäre es nützlich, die automatische Vervollständigung für den composer
Befehl in bash
. Meine Frage auf Twitter ergab keine sofortige Lösung, und da ich bereits etwas Ähnliches für Phing
tat, krempelte ich die Ärmel hoch und schrieb meine Lösung.
Wir beginnen mit der Erstellung einer neuen Bash-Abschlussdatei mit dem Namen composer
im Verzeichnis bash_completion.d
(die Datei benötigt Ausführungsrechte). Dieses Verzeichnis befindet sich normalerweise in /etc/bash_completion.d/
, aber unter OS X mit Homebrew befindet es sich in /usr/local/etc/bash_completion.d/
(vorausgesetzt, Sie haben /usr/local/etc/bash_completion.d/
brew install bash-complete
/usr/local/etc/bash_completion.d/
bereits installiert).
Hier ist die Datei:
(Beachten Sie, dass __ltrim_colon_completions
nur in neueren Versionen von bash-complete
unterstützt wird. __ltrim_colon_completions
müssen Sie diese Zeile möglicherweise entfernen.)
Um eine Liste der Befehle für Composer zu erhalten, erstellen wir eine Wortliste für die Option -W für compgen
indem wir composer --no-ansi
, und löschen dann mit AWK alles, was kein Befehl ist. Wir erstellen auch eine separate Flag-Argumentliste, wenn der Benutzer die Tabulatortaste drückt, nachdem der Bindestrich eingegeben wurde.
Durch Ausführen von composer {cmd} -h --no-ansi
füllen wir automatisch die Flags für jeden Unterbefehl aus und beschränken die Liste mit tr
und grep
auf nur Wörter, die mit einem Bindestrich beginnen.
Wenn Sie jetzt nach dem Komponisten die Tabulatortaste drücken, vervollständigt bash automatisch sowohl die integrierten Komponistenbefehle als auch die Benutzerskripte!

Wie Sie in diesem Beispiel sehen können, werden neben integrierten Befehlen wie dump-autoload
und show
auch meine eigenen Skripte angezeigt, einschließlich apiary-fetch
und anderer.
Dies ist sehr nützlich, wenn das Gedächtnis versagt!