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.
Hooks

Hook after_app_build

Exécuter des actions après la construction d'une application Dokos

Hook after_app_build

Le hook after_app_build permet d'exécuter des actions personnalisées après la construction d'une application Dokos. Ce hook est particulièrement utile pour les développeurs souhaitant intégrer des processus supplémentaires lors de l'installation ou de la mise à jour d'une application, comme la génération de fichiers front-end ou la compilation de ressources spécifiques.

Utilisation

Pour utiliser ce hook, ajoutez une fonction dans le fichier hooks.py de votre application Dokos. Cette fonction sera appelée automatiquement après la construction de l'application cible.

Exemple de configuration

# hooks.py
def after_app_build(app_name):
    """
    Exécute des actions après la construction de l'application `app_name`.
    
    Args:
        app_name (str): Nom de l'application construite.
    """
    if app_name == "studio":
        # Exemple : Construire les interfaces Studio pour l'application
        from frappe.utils.boilerplate import build_studio_frontend
        build_studio_frontend(app_name)

Cas d'usage

Intégration avec Studio

Ce hook est utilisé par Studio pour générer automatiquement les interfaces front-end d'une application lors de son installation ou de sa mise à jour. Par exemple :

  1. Un utilisateur installe une application Dokos.
  2. Après la construction de l'application, le hook after_app_build est déclenché.
  3. Studio utilise ce hook pour compiler les fichiers front-end spécifiques à l'application.

Automatisation de tâches post-construction

Vous pouvez également utiliser ce hook pour :

  • Générer des fichiers de configuration dynamiques.
  • Compiler des assets personnalisés (CSS, JS).
  • Exécuter des scripts de migration de données.
  • Notifier des systèmes externes (ex : webhooks).

Bonnes pratiques

  1. Vérifiez le nom de l'application : Utilisez une condition pour cibler uniquement les applications pertinentes.
  2. Gérez les erreurs : Enveloppez votre code dans un bloc try-except pour éviter que des erreurs ne bloquent le processus de construction.
  3. Optimisez les performances : Évitez les opérations longues ou bloquantes dans ce hook pour ne pas ralentir l'installation.

Exemple complet

Voici un exemple complet d'utilisation du hook pour construire des assets front-end :

# hooks.py
def after_app_build(app_name):
    """Construit les assets front-end après la construction de l'application."""
    if app_name not in ["mon_app", "studio"]:
        return
    
    try:
        from frappe.utils.boilerplate import build_frontend_assets
        build_frontend_assets(app_name)
        frappe.log(f"Assets front-end construits pour {app_name}")
    except Exception as e:
        frappe.log_error(f"Échec de la construction des assets pour {app_name}: {str(e)}")

Références