slush-meanjs
Version:
A slush generator to scaffold MEAN Apps. Inspired by http://meanjs.org
106 lines (97 loc) • 3.94 kB
JavaScript
module.exports = function(gulp, install, conflict, template, rename, _, inflections, inquirer, mkdirp){
gulp.task('angular-module', function (done) {
if(!this.args[0])
{
console.log('****** Incorrect usage of the sub-generator!! ******');
console.log('****** Try slush meanjs:angular-module <module-name> ******');
console.log('****** Ex: slush meanjs:angular-module article ******');
return done();
}
var moduleName = this.args[0];
var prompts = [{
type: 'checkbox',
name: 'folders',
message: 'Which folders would you like your module to include?',
choices: [{
value: 'addConfigFolder',
name: 'config',
checked: true
}, {
value: 'addControllersFolder',
name: 'controllers',
checked: true
}, {
value: 'addCSSFolder',
name: 'css',
checked: false
}, {
value: 'addDirectivesFolder',
name: 'directives',
checked: false
}, {
value: 'addFiltersFolder',
name: 'filters',
checked: false
}, {
value: 'addImagesFolder',
name: 'img',
checked: false
}, {
value: 'addServicesFolder',
name: 'services',
checked: true
}, {
value: 'addTestsFolder',
name: 'tests',
checked: true
}, {
value: 'addViewsFolder',
name: 'views',
checked: true
}]
}];
//Ask
inquirer.prompt(prompts,
function (answers) {
if (!answers) {
return done();
}
// modulename
answers.slugifiedName = _.slugify(_.humanize(moduleName));
answers.addConfigFolder = _.contains(answers.folders, 'addConfigFolder');
answers.addControllersFolder = _.contains(answers.folders, 'addControllersFolder');
answers.addCSSFolder = _.contains(answers.folders, 'addCSSFolder');
answers.addDirectivesFolder = _.contains(answers.folders, 'addDirectivesFolder');
answers.addFiltersFolder = _.contains(answers.folders, 'addFiltersFolder');
answers.addImagesFolder = _.contains(answers.folders, 'addImagesFolder');
answers.addServicesFolder = _.contains(answers.folders, 'addServicesFolder');
answers.addTestsFolder = _.contains(answers.folders, 'addTestsFolder');
answers.addViewsFolder = _.contains(answers.folders, 'addViewsFolder');
// create root folder
mkdirp('public/modules/' + answers.slugifiedName);
// Create module sub-folders
if (answers.addConfigFolder) mkdirp('public/modules/' + answers.slugifiedName + '/config');
if (answers.addControllersFolder) mkdirp('public/modules/' + answers.slugifiedName + '/controllers');
if (answers.addCSSFolder) mkdirp('public/modules/' + answers.slugifiedName + '/css');
if (answers.addDirectivesFolder) mkdirp('public/modules/' + answers.slugifiedName + '/directives');
if (answers.addFiltersFolder) mkdirp('public/modules/' + answers.slugifiedName + '/filters');
if (answers.addImagesFolder) mkdirp('public/modules/' + answers.slugifiedName + '/img');
if (answers.addServicesFolder) mkdirp('public/modules/' + answers.slugifiedName + '/services');
if (answers.addTestsFolder) mkdirp('public/modules/' + answers.slugifiedName + '/tests');
if (answers.addViewsFolder) mkdirp('public/modules/' + answers.slugifiedName + '/views');
gulp.src(__dirname + '/../templates/angular-module/**')
.pipe(template(answers))
.pipe(rename(function(file) {
if (file.basename.indexOf('_') == 0) {
file.basename = file.basename.replace('_',answers.slugifiedName);
}
}))
.pipe(conflict('public/modules/' + answers.slugifiedName+'/'))
.pipe(gulp.dest('public/modules/' + answers.slugifiedName+'/'))
.on('end', function () {
done();
});
});
});
return gulp;
}