Complétion automatique du shell (bench completions)
Complétion automatique du shell
La commande bench completions génère un script de complétion statique pour votre shell (bash ou zsh). Une fois activée, appuyer sur la touche Tab dans votre terminal suggère automatiquement les commandes et options disponibles pour bench.
completion.sh qui nécessitait un démarrage Python complet à chaque appui sur Tab (~1 seconde). Le nouveau script généré est entièrement statique : la complétion s'exécute en pur bash, sans lancer Python (~1 ms).Prérequis
- Une version de docli qui contient la commande.
bench completionsest sur la branchedevelopde docli depuis avril 2026, et la complétion des chemins depuis juillet 2026. Aucune version publiée ne les contient encore : la dernière, v2.9.2 (février 2026), ne les a pas. Pour vérifier, lancezbench completions --help. - Le shell bash ou zsh.
- Pour compléter aussi les commandes des applications (
bench --site … migrate, etc.), lancez la commande depuis le dossier du bench.
Utilisation
Mode interactif
Lancez la commande sans argument depuis votre répertoire bench :
bench completions
La commande détecte votre shell avec la variable SHELL. Elle demande ensuite :
- le fichier du script de complétion (par défaut
~/.config/bench/completion.bashou~/.config/bench/completion.zsh) ; - le fichier de configuration du shell (par défaut
~/.bashrcou~/.zshrc) ; - la confirmation d'ajouter la ligne
sourcedans ce fichier.
Si la ligne est déjà présente, la commande ne l'ajoute pas une deuxième fois.
Mode non interactif
Passez directement le flag correspondant à votre shell :
# Pour zsh
bench completions --zsh
# Pour bash
bench completions --bash
Ajoutez --yes pour confirmer automatiquement la modification du fichier de configuration sans invite :
bench completions --zsh --yes
bench completions --bash --yes
Autres options :
| Option | Effet |
|---|---|
--path <fichier> | Écrit le script de complétion dans ce fichier |
--rc-file <fichier> | Ajoute la ligne source dans ce fichier de configuration |
--skip-rc | Écrit le script sans modifier le fichier de configuration. La commande affiche la ligne source à ajouter. |
--yes, -y | Ne demande pas de confirmation avant de modifier le fichier de configuration |
Après une mise à jour de bench ou l'installation d'une application, relancez bench completions pour mettre à jour la liste des commandes.
Ce que fait la commande
- Collecte des commandes —
bench completionsparcourt l'arbre Click de bench pour lister toutes les commandes et options natives. - Introspection des applications — Si vous êtes dans un bench contenant des applications Frappe/Dodock, un seul sous-processus est lancé pour charger Frappe et récupérer toutes les commandes des applications installées (via
get_app_groups()). Cette opération prend environ 1 à 2 secondes, quel que soit le nombre d'applications. - Fallback BFS — Pour les versions de Frappe antérieures qui n'exposent pas
get_app_groups(), la commande utilise une exploration parallèle des sorties--help. - Script statique — Le résultat est un script bash ou zsh. La complétion au moment de la frappe ne lance aucun processus Python.
Comparaison avec l'ancien completion.sh
| Critère | completion.sh (supprimé) | bench completions |
|---|---|---|
| Coût par appui sur Tab | ~1 s (démarrage Python) | ~1 ms (pur bash) |
| Compatible Click 8 | Non | Oui |
| Fonctionne hors répertoire bench | Non (chemin codé en dur) | Oui |
Effet de bord cd | Oui | Non |
| Outils externes requis | ls, cut, xargs | Aucun |
| Installation | Source manuelle | bench completions |
Compléter les chemins de fichiers
La complétion propose aussi les fichiers et dossiers pour les options et arguments qui attendent un chemin. Ce sont les paramètres de type chemin, et ceux dont le nom contient path, file, sql, certificate ou clone_from. Par exemple : l'argument de restore, backup --backup-path ou data-import --file. Appuyez sur Tab après le début du chemin. Un chemin qui commence par ~ part de votre dossier personnel.
bench --site dokompany.fr restore ~/sauvegardes/[Tab]
Désactivation
Pour désactiver la complétion, supprimez la ligne source ... ajoutée dans votre fichier ~/.bashrc ou ~/.zshrc. Vous pouvez aussi supprimer le script dans ~/.config/bench/. Ouvrez ensuite un nouveau terminal.