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 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 (~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

  • Être placé dans un répertoire frappe-bench lors de la génération du script (la commande détecte automatiquement la racine du bench).
  • Avoir bench installé via docli.

Utilisation

Mode interactif

Lancez la commande sans argument depuis votre répertoire bench :

bench completions

Le programme vous pose quelques questions pour déterminer votre shell et le fichier de configuration à modifier (.bashrc, .zshrc, etc.), puis ajoute la ligne source nécessaire.

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

Ce que fait la commande

  1. Collecte des commandesbench 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 quelle 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 ensemble de fonctions case bash pures. La complétion au runtime 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

Désactivation

Pour désactiver la complétion, supprimez la ligne source ... ajoutée dans votre fichier ~/.bashrc ou ~/.zshrc, puis rechargez votre shell :

source ~/.bashrc  # ou ~/.zshrc