diff --git a/src/addons.js b/src/addons.js index 767200eeb..05ca7f1d6 100644 --- a/src/addons.js +++ b/src/addons.js @@ -7,6 +7,8 @@ exports = module.exports = { restoreAddons: restoreAddons, clearAddons: clearAddons, + importDatabase: importDatabase, + waitForAddon: waitForAddon, getEnvironment: getEnvironment, @@ -277,6 +279,24 @@ function restoreAddons(app, addons, callback) { }, callback); } +function importDatabase(addon, callback) { + assert.strictEqual(typeof addon, 'string'); + assert.strictEqual(typeof callback, 'function'); + + debug(`importDatabase: Importing ${addon}`); + + if (!(addon in KNOWN_ADDONS)) return callback(new Error(`No such addon: ${addon}`)); + + appdb.getAll(function (error, apps) { + if (error) return callback(error); + + async.eachSeries(apps, function iterator (app, iteratorCallback) { + debug(`importDatabase: Importing app ${app.id}`) + KNOWN_ADDONS[addon].restore(app, addon, iteratorCallback); + }, callback); + }); +} + function getEnvironment(app, callback) { assert.strictEqual(typeof app, 'object'); assert.strictEqual(typeof callback, 'function');