From 78e9446a05307da9848a5d17a5ed21b4e03e1aaa Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Mon, 23 Sep 2019 10:15:58 -0700 Subject: [PATCH] Refactor repair into separate function --- src/apptask.js | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/apptask.js b/src/apptask.js index 9c3a5fde6..cf39f098f 100644 --- a/src/apptask.js +++ b/src/apptask.js @@ -1033,6 +1033,30 @@ function uninstall(app, args, progressCallback, callback) { }); } +function repair(app, args, progressCallback, callback) { + assert.strictEqual(typeof app, 'object'); + assert.strictEqual(typeof args, 'object'); + assert.strictEqual(typeof progressCallback, 'function'); + assert.strictEqual(typeof callback, 'function'); + + const error = args.error; + const prevState = error && error.task ? args.error.task.installationState : apps.ISTATE_PENDING_CONFIGURE; + + debugApp(app, `Repairing app with error: ${JSON.stringify(error)} and state: ${prevState}`); + + if (prevState === apps.ISTATE_PENDING_UNINSTALL) { + uninstall(app, error.task.args, progressCallback, callback); + } else if (prevState === apps.ISTATE_PENDING_DATA_DIR_MIGRATION) { + migrateDataDir(app, error.task.args, progressCallback, callback); + } else if (prevState === apps.ISTATE_PENDING_INSTALL + || prevState === apps.ISTATE_PENDING_CLONE + || prevState === apps.ISTATE_PENDING_RESTORE) { + install(app, args, progressCallback, callback); + } else { + configure(app, args, progressCallback, callback); + } +} + function run(appId, args, progressCallback, callback) { assert.strictEqual(typeof appId, 'string'); assert.strictEqual(typeof args, 'object'); @@ -1050,20 +1074,8 @@ function run(appId, args, progressCallback, callback) { case apps.ISTATE_PENDING_CLONE: case apps.ISTATE_PENDING_RESTORE: return install(app, args, progressCallback, callback); - case apps.ISTATE_PENDING_REPAIR: { - let prevState = args.error && args.error.task ? args.error.task.installationState : apps.ISTATE_PENDING_CONFIGURE; - if (prevState === apps.ISTATE_PENDING_UNINSTALL) { - return uninstall(app, error.task.args, progressCallback, callback); - } else if (prevState === apps.ISTATE_PENDING_DATA_DIR_MIGRATION) { - return migrateDataDir(app, error.task.args, progressCallback, callback); - } else if (prevState === apps.ISTATE_PENDING_INSTALL - || prevState === apps.ISTATE_PENDING_CLONE - || prevState === apps.ISTATE_PENDING_RESTORE) { - return install(app, args, progressCallback, callback); - } else { - return configure(app, args, progressCallback, callback); - } - } + case apps.ISTATE_PENDING_REPAIR: + return repair(app, args, progressCallback, callback); case apps.ISTATE_PENDING_CONFIGURE: return configure(app, args, progressCallback, callback); case apps.ISTATE_PENDING_RECREATE_CONTAINER: