Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Bench

Complétion automatique du shell (bench completions)

Activez la complétion automatique des commandes bench dans votre terminal bash ou zsh grâce à la commande 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.

Cette commande remplace l'ancien fichier 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 completions est sur la branche develop de 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, lancez bench 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 :

  1. le fichier du script de complétion (par défaut ~/.config/bench/completion.bash ou ~/.config/bench/completion.zsh) ;
  2. le fichier de configuration du shell (par défaut ~/.bashrc ou ~/.zshrc) ;
  3. la confirmation d'ajouter la ligne source dans 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 :

OptionEffet
--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, -yNe 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

  1. Collecte des commandes — bench completions parcourt l'arbre Click de bench pour lister toutes les commandes et options natives.
  2. 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.
  3. 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.
  4. 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èrecompletion.sh (supprimé)bench completions
Coût par appui sur Tab~1 s (démarrage Python)~1 ms (pur bash)
Compatible Click 8NonOui
Fonctionne hors répertoire benchNon (chemin codé en dur)Oui
Effet de bord cdOuiNon
Outils externes requisls, cut, xargsAucun
InstallationSource manuellebench 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.