Refactor repair into separate function

This commit is contained in:
Girish Ramakrishnan
2019-09-23 10:15:58 -07:00
parent 138e1595fa
commit 78e9446a05

View File

@@ -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: