UNPKG

generator-cg-angular

Version:

Yeoman Generator for Enterprise Angular projects.

73 lines (59 loc) 2.2 kB
'use strict'; var util = require('util'); var yeoman = require('yeoman-generator'); var path = require('path'); var cgUtils = require('../utils.js'); var chalk = require('chalk'); var _ = require('underscore'); var fs = require('fs'); _.str = require('underscore.string'); _.mixin(_.str.exports()); var ModuleGenerator = module.exports = function ModuleGenerator(args, options, config) { cgUtils.getNameArg(this,args); yeoman.generators.Base.apply(this, arguments); this.uirouter = this.config.get('uirouter'); this.routerModuleName = this.uirouter ? 'ui.router' : 'ngRoute'; }; util.inherits(ModuleGenerator, yeoman.generators.Base); ModuleGenerator.prototype.askFor = function askFor() { var cb = this.async(); var that = this; var prompts = [ { name:'dir', message:'Where would you like to create the module (must specify a subdirectory)?', default: function(data){ return path.join(that.name || data.name,'/'); }, validate: function(value) { value = _.str.trim(value); if (_.isEmpty(value) || value[0] === '/' || value[0] === '\\') { return 'Please enter a subdirectory.'; } return true; } } ]; cgUtils.addNamePrompt(this,prompts,'module'); this.prompt(prompts, function (props) { if (props.name){ this.name = props.name; } this.dir = path.join(props.dir,'/'); cb(); }.bind(this)); }; ModuleGenerator.prototype.files = function files() { var module = cgUtils.getParentModule(path.join(this.dir,'..')); module.dependencies.modules.push(_.camelize(this.name)); module.save(); this.log.writeln(chalk.green(' updating') + ' %s',path.basename(module.file)); cgUtils.processTemplates(this.name,this.dir,'module',this,null,null,module); var modules = this.config.get('modules'); if (!modules) { modules = []; } modules.push({name:_.camelize(this.name),file:path.join(this.dir,this.name + '.js')}); this.config.set('modules',modules); this.config.save(); };