From 81c19cd1d6cd007878204227c1172a94707af4f1 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Sun, 9 Oct 2016 21:34:03 +0200 Subject: [PATCH] [enh] no cli option to avoid removing an application on installation failure --- data/actionsmap/yunohost.yml | 3 +++ src/yunohost/app.py | 28 +++++++++++++++------------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/data/actionsmap/yunohost.yml b/data/actionsmap/yunohost.yml index 5a1465258..126993076 100644 --- a/data/actionsmap/yunohost.yml +++ b/data/actionsmap/yunohost.yml @@ -436,6 +436,9 @@ app: -a: full: --args help: Serialized arguments for app script (i.e. "domain=domain.tld&path=/path") + -n: + full: --no-remove-on-fail + help: Debug option to avoid removing the app on a filed installation ### app_remove() TODO: Write help remove: diff --git a/src/yunohost/app.py b/src/yunohost/app.py index caa38e95b..5ac0cb971 100644 --- a/src/yunohost/app.py +++ b/src/yunohost/app.py @@ -440,7 +440,7 @@ def app_upgrade(auth, app=[], url=None, file=None): logger.success(m18n.n('upgrade_complete')) -def app_install(auth, app, label=None, args=None): +def app_install(auth, app, label=None, args=None, no_remove_on_fail=False): """ Install apps @@ -448,6 +448,7 @@ def app_install(auth, app, label=None, args=None): app -- Name, local path or git URL of the app to install label -- Custom name for the app args -- Serialize arguments for app installation + no_remove_on_fail -- Debug option to avoid removing the app on a filed installation """ from yunohost.hook import hook_add, hook_remove, hook_exec @@ -541,19 +542,20 @@ def app_install(auth, app, label=None, args=None): logger.exception(m18n.n('unexpected_error')) finally: if install_retcode != 0: - # Setup environment for remove script - env_dict_remove = {} - env_dict_remove["YNH_APP_ID"] = app_id - env_dict_remove["YNH_APP_INSTANCE_NAME"] = app_instance_name - env_dict_remove["YNH_APP_INSTANCE_NUMBER"] = str(instance_number) + if not no_remove_on_fail: + # Setup environment for remove script + env_dict_remove = {} + env_dict_remove["YNH_APP_ID"] = app_id + env_dict_remove["YNH_APP_INSTANCE_NAME"] = app_instance_name + env_dict_remove["YNH_APP_INSTANCE_NUMBER"] = str(instance_number) - # Execute remove script - remove_retcode = hook_exec( - os.path.join(extracted_app_folder, 'scripts/remove'), - args=[app_instance_name], env=env_dict_remove) - if remove_retcode != 0: - logger.warning(m18n.n('app_not_properly_removed', - app=app_instance_name)) + # Execute remove script + remove_retcode = hook_exec( + os.path.join(extracted_app_folder, 'scripts/remove'), + args=[app_instance_name], env=env_dict_remove) + if remove_retcode != 0: + logger.warning(m18n.n('app_not_properly_removed', + app=app_instance_name)) # Clean tmp folders shutil.rmtree(app_setting_path)