diff --git a/data/actionsmap/yunohost.yml b/data/actionsmap/yunohost.yml index 24b09945..3effd844 100644 --- a/data/actionsmap/yunohost.yml +++ b/data/actionsmap/yunohost.yml @@ -1478,6 +1478,12 @@ tools: extra: pattern: *pattern_port + ### tools_shell() + shell: + configuration: + authenticate: all + action_help: Launch a development shell + ### tools_shutdown() shutdown: action_help: Shutdown the server diff --git a/src/yunohost/tools.py b/src/yunohost/tools.py index 5b74883f..294575ed 100644 --- a/src/yunohost/tools.py +++ b/src/yunohost/tools.py @@ -814,6 +814,30 @@ def tools_migrations_state(): return read_json(MIGRATIONS_STATE_PATH) +def tools_shell(auth): + """ + Launch an (i)python shell in the YunoHost context. + + This is entirely aim for development. + """ + + logger.warn("The \033[1;34mauth\033[0m is available in this context") + try: + from IPython import embed + embed() + except ImportError: + logger.warn("You don't have IPython installed, consider installing it as it is way better than the standard shell.") + logger.warn("Falling back on the standard shell.") + + import readline # will allow Up/Down/History in the console + readline # to please pyflakes + import code + vars = globals().copy() + vars.update(locals()) + shell = code.InteractiveConsole(vars) + shell.interact() + + def _get_migrations_list(): migrations = []