Activer l'autocomplétion Castor sur l'hôte¶
Cette recette installe l'autocomplétion de la commande castor dans votre shell sur votre machine hôte, en dehors du devcontainer. À l'issue, taper castor suivi de Tab proposera la liste des cibles définies dans castor.php, et castor cs: proposera les sous-cibles.
Dans le devcontainer, rien à faire
L'image du devcontainer active déjà l'autocomplétion castor pour toutes les sessions bash interactives via /etc/bash.bashrc. Voir Autocomplétion Castor pour le détail. Cette page ne concerne que l'hôte.
Prérequis¶
- Castor installé sur votre hôte (
castor --versiondoit répondre). - L'un des shells supportés : bash, zsh ou fish.
-
Pour bash uniquement : le paquet
bash-completiondoit être installé. Sans lui,castor <Tab>échoue sur_get_comp_words_by_ref: command not foundcar le script généré parcastor completion bash(basé sur Symfony Console) s'appuie sur cette fonction helper fournie par/usr/share/bash-completion/bash_completion.Sur la plupart des distributions Linux desktop modernes,
bash-completionest installé par défaut — vérifiez avecdpkg -l bash-completion(Debian/Ubuntu) outype _get_comp_words_by_refdans un shell. zsh et fish n'ont pas ce prérequis (leur framework de complétion est intégré au shell).
castor completion est une commande native de Castor (Symfony Console). Elle imprime sur la sortie standard un script de complétion statique : pas besoin d'être dans un dossier contenant castor.php pour le générer ou l'évaluer.
Méthode dynamique — eval dans le fichier de configuration du shell¶
C'est la méthode recommandée : le script est régénéré à chaque ouverture de shell, donc toujours à jour avec la version de castor installée.
Pour vérifier, ouvrez un nouveau terminal et tapez :
Vous devez voir la liste des cibles disponibles. Si castor.php est présent dans le CWD, les cibles du projet s'affichent en plus des cibles globales ; sinon, seules les cibles globales (--help, --version, etc.) sont proposées — c'est attendu.
Méthode statique — fichier dans bash_completion.d¶
Si vous préférez un fichier de complétion installé une fois pour toutes (et ne plus dépendre d'un eval au démarrage du shell), générez-le et déposez-le dans le dossier standard de complétion bash :
# Système avec /etc/bash_completion.d (requiert sudo)
castor completion bash | sudo tee /etc/bash_completion.d/castor > /dev/null
# Variante par utilisateur (pas de sudo)
mkdir -p ~/.local/share/bash-completion/completions
castor completion bash > ~/.local/share/bash-completion/completions/castor
Ouvrez un nouveau terminal pour que bash-completion recharge ses définitions.
À régénérer après une mise à jour de Castor
Avec la méthode statique, le script est figé à la version de Castor au moment de la génération. Si vous mettez Castor à jour et qu'une nouvelle option ou cible globale apparaît, regénérez le fichier. La méthode dynamique (eval) n'a pas ce souci.
Désinstaller¶
Retirez la ligne eval "$(castor completion …)" de ~/.bashrc, ~/.zshrc ou supprimez ~/.config/fish/completions/castor.fish. Puis exec "$SHELL".
Supprimez /etc/bash_completion.d/castor (ou ~/.local/share/bash-completion/completions/castor). Puis ouvrez un nouveau terminal.
Et ensuite ?¶
- Référence des commandes Castor — la liste complète des cibles que l'autocomplétion vous fera découvrir.
- Autocomplétion Castor (devcontainer) — comment elle est activée à l'intérieur du devcontainer.