lithium-sdk
Version:
### Lithium Developer Community Area
76 lines (66 loc) • 2.29 kB
JavaScript
;
var lazyReq = require('lazy-req')(require);
var inquirer = lazyReq('inquirer');
var through = lazyReq('through2');
module.exports = function (gulp, gutil) {
var pluginExport, pluginServer;
function getPluginServer() {
if (!pluginServer) {
pluginServer = require('../lib/plugin-server.js')(gulp, gutil);
}
return pluginServer;
}
function exportPlugin(pluginPointAnswers) {
if (!pluginExport) {
pluginExport = require('../lib/plugin-export.js')(gulp, gutil);
}
var server = getPluginServer().getServer();
return pluginExport.exportPlugin(server, {
pluginType: 'studio',
doClear: false,
verboseMode: gutil.env['verbose'],
debugMode: gutil.env['debug'],
sdkOutputDir: gutil.env['todir'] || server.sdkOutputDir()
}, pluginPointAnswers, function() {});
}
gulp.task('studio-plugin-export', ['clean', 'version-check' ], function () {
var stream = through().obj();
var server = getPluginServer().getServer();
if ((gutil.env['force'] || server.force()) && !gutil.env['prompt']) {
exportPlugin(getPluginServer().getPluginPoints()).pipe(stream);
} else {
inquirer().prompt({
name: 'pluginExport',
message: 'Would you like to download the entire studio plugin?',
type: 'confirm'
}, function (answers) {
if (answers.pluginExport) {
exportPlugin(getPluginServer().getPluginPoints()).pipe(stream);
} else {
inquirer().prompt({
name: 'pluginPoints',
message: 'What plugin points would you like to download? (choose up to 5)',
type: 'checkbox',
choices: getPluginServer().getPluginPointChoices(),
validate: function(answer) {
if (answer.length < 1) {
return 'You must choose at least one plugin point.';
} else if (answer.length > 5) {
return 'You cannot choose more than 5 plugin points.';
}
return true;
}
}, function(answers) {
if (answers.pluginPoints) {
exportPlugin(answers).pipe(stream);
} else {
stream.end();
}
});
}
});
}
return stream;
});
gulp.task('exportstudio', ['studio-plugin-export']);
};