diff --git a/frappe/commands/utils.py b/frappe/commands/utils.py index 60607fd11f..ca94bed751 100644 --- a/frappe/commands/utils.py +++ b/frappe/commands/utils.py @@ -108,6 +108,19 @@ def build( print("Compiling translations for", app) compile_translations(app, force=force) + run_after_build_hook(apps) + + +def run_after_build_hook(apps): + from importlib import import_module + + for app in apps: + for fn in frappe.get_hooks("after_build", app_name=app): + modulename = ".".join(fn.split(".")[:-1]) + methodname = fn.split(".")[-1] + method = getattr(import_module(modulename), methodname) + method() + @click.command("watch") @click.option("--apps", help="Watch assets for specific apps") diff --git a/frappe/utils/boilerplate.py b/frappe/utils/boilerplate.py index 28cec44069..204abf1262 100644 --- a/frappe/utils/boilerplate.py +++ b/frappe/utils/boilerplate.py @@ -515,6 +515,12 @@ app_license = "{app_license}" # before_app_uninstall = "{app_name}.utils.before_app_uninstall" # after_app_uninstall = "{app_name}.utils.after_app_uninstall" +# Build +# ------------------ +# To hook into the build process + +# after_build = "{app_name}.build.after_build" + # Desk Notifications # ------------------ # See frappe.core.notifications.get_notification_config