From 762e7984c284d054aeead1f5861594df22c213b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Behmo?= Date: Fri, 4 Oct 2019 11:43:26 +0200 Subject: [PATCH] Introduce `local hook` command --- CHANGELOG.md | 1 + tutor/commands/local.py | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index df93cb1..452d1b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ Note: Breaking changes between versions are indicated by "💥". ## Unreleased +- [Feature] Introduce `local hook` command for plugin development. - [Bugfix] Persist `private.txt` file between two runs of `config save`. (#247) - [Improvement] Added configuration values to limit the number of gunicorn workers for the LMS and CMS. diff --git a/tutor/commands/local.py b/tutor/commands/local.py index ec6399e..cc8cb6e 100644 --- a/tutor/commands/local.py +++ b/tutor/commands/local.py @@ -169,6 +169,28 @@ def init(root): scripts.initialise(runner) +@click.command( + short_help="Manually trigger hook (advanced users only)", + help=""" +Manually trigger a hook for a given plugin/service. This is a low-level command +that is convenient when developing new plugins. Ex: + + tutor local hook mysql hooks mysql init + tutor local hook discovery discovery hooks discovery init""", + name="hook", +) +@opts.root +@click.argument("service") +@click.argument("path", nargs=-1) +def run_hook(root, service, path): + config = tutor_config.load(root) + runner = ScriptRunner(root, config) + fmt.echo_info( + "Running '{}' hook in '{}' container...".format(".".join(path), service) + ) + runner.run(service, *path) + + @click.group(help="Manage https certificates") def https(): pass @@ -354,6 +376,7 @@ local.add_command(reboot) local.add_command(run) local.add_command(execute, name="exec") local.add_command(init) +local.add_command(run_hook) local.add_command(https) local.add_command(logs) local.add_command(createuser)