hence-inquisitor
Version:
A streamlined scaffolding installer utility, incorporating inquirer and glup-utils at it's core.
55 lines (44 loc) • 1.47 kB
JavaScript
var _ = require('lodash');
var async = require('async');
var ascii = require('../ascii');
/**
*
* @param scaffold
* @param steps
* @param installOptions
* @param done
*/
var multiInstall = function (scaffold, steps, installOptions, done) {
var installers = [];
var originalInstaller = _.cloneDeep(scaffold);
var doneMessage = originalInstaller.content.done; // store the current done message for later
originalInstaller.renderIntro();
// Clear out content messages now, until the actual end when we can render the done message again.
_.extend(originalInstaller.content, {
intro: '',
done: ''
});
_.each(installOptions, function (opts) {
_.defaultsDeep(opts,{
content: {
done: ascii.spacer()
}
});
installers.push(function (cb) {
var tempInstaller = _.defaultsDeep({defaults: {skipToInstall: true}}, opts, _.cloneDeep(originalInstaller));
if (originalInstaller.debug) {
console.log('>> Start multi-installer with defaults of: ', _.pick(tempInstaller, 'content', 'defaults'));
}
tempInstaller.start(steps, cb);
});
});
async.series(installers, function (err) {
// Now that all of the installers are finished, provide the done message finally if no errors occurred
if (!err && doneMessage) {
ascii.complete(doneMessage, true);
}
// Call the stream/cli callback now everything is finished
done();
});
};
module.exports = multiInstall;