Frappe Framework
Étendre la CLI
bench cherche un module commands dans chaque application. Une liste commands de fonctions Click devient des commandes du CLI.
Où bench cherche les commandes
En plus des commandes du framework, le module bench_manager de Frappe cherche les commandes des applications personnalisées. Bench interroge le Frappe du bench, qui parcourt toutes les applications.
Mise en place
Créez un module commands sous le module parent. Écrivez la commande avec un décorateur Click, puis une variable commands qui liste ces fonctions.
Pour une application flags, le module est apps/flags/flags/commands.py, ou un dossier commands avec __init__.py.
import click
@click.command("set-flags")
@click.argument("state", type=click.Choice(["on", "off"]))
def set_flags(state):
from flags.utils import set_flags
set_flags(state=state)
commands = [set_flags]Dans le contexte du bench courant, la commande s’appelle bench set-flags. L’exemple de sortie affiche l’état, et la ligne publiée montre Flags are set to state: 'on' alors que l’appel illustré ne passe pas l’argument on ou off.
Point d’attention
Le nom Click (set-flags) est celui tapé après bench. L’argument state n’accepte que on ou off. La fonction importée dans le corps porte le même nom que la commande : la source l’importe depuis flags.utils.
