UNPKG

xitme

Version:

AngularJS boilerplate generator

208 lines (172 loc) 7.08 kB
#!/usr/bin/env node var program = require(__dirname + '/node_modules/commander'); program .version('0.0.2') .option('-s, --shared', 'Set is shared component') .option('-o, --main', 'Set is main component') .option('-c, --controller [name]', 'Generate controller with [name]') .option('-d, --directive [name]', 'Generate directive with [name] (Enought to generate directive)') .option('-t, --directive-tag [tag]', 'Generate directive with [tag]') .option('-s, --service [name]', 'Generate service with [name]') .option('-q, --module [name]', 'Generate module with [name]') .option('-m, --model [name]', 'Generate model with [name]') .option('-f, --filter-string [name]', 'Add HTML Angular filter [string]') .option('-f, --filter [name]', 'Add filter with [name](Enought to generate filter)') .option('-i, --init', 'Initialize XIT, generate xit.json') .option('-p, --classic', 'Generate standard component') .option('-b, --boilerplate', 'Generate XIT boilerplate') .option('-y, --sample', 'Generate --boilerplate with sample application') .parse(process.argv); var clc = require(__dirname + '/node_modules/cli-color'); var fs = require('fs-extra'); var result = false; var gruntconfig = {}; if (program.init) { result = result || true; fs.copySync(__dirname + '/xit.json', process.cwd() + '/xit.json'); } else { var xitjson = false; try { var xitconfig = require(process.cwd() + '/xit.json'); if (xitconfig) { xitjson = xitconfig['generate']; gruntconfig['location'] = process.cwd() + xitconfig.components || process.cwd(); console.log(clc.green.bgBlack("xit.json loaded succesfully!")); } } catch (e) { if (e instanceof Error && e.code === "MODULE_NOT_FOUND") { gruntconfig['location'] = process.cwd(); console.log(clc.yellow.bgBlack("xit.json is not defined!")); } else { throw e; } } var grunt = require(__dirname + '/../grunt'); var isClassic = program.classic; var generateBoilerplate = program.boilerplate; var withSample = program.sample; if (isClassic) { gruntconfig['is_classic'] = 'classic'; } else { gruntconfig['is_classic'] = 'classjs'; } if (program.shared) { gruntconfig['module_scope'] = "shared"; } else if (program.main) { gruntconfig['module_scope'] = "main"; } else { gruntconfig['module_scope'] = ""; } if (xitconfig) { gruntconfig['components_location'] = xitconfig.components; } if (program.controller) { gruntconfig['controller_name'] = program.controller; } if (program.directive) { gruntconfig['directive_name'] = program.directive; gruntconfig['directive_tag'] = program.directiveTag || (program.directive && console.log(clc.yellow('Warning: "Directive tag not specified! --help"'))); } if (program.filter) { gruntconfig['filter_param'] = program.filterString || (program.filter.toLowerCase() && console.log(clc.yellow('Warning: "Filter string not specified! --help"'))); gruntconfig['filter_name'] = program.filter; } if (program.service) { gruntconfig['model_name'] = program.service; gruntconfig['model_name_lowercase'] = program.service.toLowerCase(); } if (program.model) { gruntconfig['model_name'] = program.model; gruntconfig['model_name_lowercase'] = program.model.toLowerCase(); } if (program.module) { gruntconfig['module_name'] = program.module; gruntconfig['model_name'] = program.module; gruntconfig['model_name_lowercase'] = String(program.module).toLowerCase(); gruntconfig['controller_name'] = program.module; } process.chdir(__dirname); if (!xitjson) { if (program.controller) { result = result || true; gruntconfig['module_name'] = program.controller; grunt.config.set('gruntconfig', gruntconfig); grunt.tasks(['replace:controller', 'rename:controller', 'copy:controller', 'clean']); } if (program.directive) { result = result || true; gruntconfig['module_name'] = program.directive; grunt.config.set('gruntconfig', gruntconfig); grunt.tasks(['replace:directive', 'replace:partial', 'rename:directive', 'copy:directive', 'clean']); } if (program.filter) { result = result || true; gruntconfig['module_name'] = program.filter; grunt.config.set('gruntconfig', gruntconfig); grunt.tasks(['replace:filter', 'rename:filter', 'copy:filter', 'clean']); } if (program.service) { result = result || true; gruntconfig['module_name'] = program.service; grunt.config.set('gruntconfig', gruntconfig); grunt.tasks(['replace:service', 'rename:service', 'copy:service', 'clean']); } if (program.model) { result = result || true; gruntconfig['module_name'] = program.model; grunt.config.set('gruntconfig', gruntconfig); grunt.tasks(['replace:model', 'rename:model', 'copy:model', 'clean']); } if (program.module) { result = result || true; grunt.config.set('gruntconfig', gruntconfig); grunt.tasks(['replace:controller', 'rename:controller', 'copy:controller', 'replace:service', 'rename:service', 'copy:service', 'replace:model', 'rename:model', 'copy:model', 'clean']); } } else { } if (generateBoilerplate) { result = result || true; grunt.config.set('gruntconfig', gruntconfig); if (withSample) { grunt.tasks(['copy:boilerplate_sample']); console.log('Run npm install & grunt --first-run --app_name="ApplicationName" before using boilerplate'); } else if (isClassic) { grunt.tasks(['copy:boilerplate_classic']); console.log('Run npm install & grunt --first-run --app_name="ApplicationName" before using boilerplate'); } else { grunt.tasks(['copy:boilerplate']); console.log('Run npm install & grunt --first-run --app_name="ApplicationName" before using boilerplate'); } } } if (result) { console.log(clc.green("XIT GENERATED SUCCESFULLY!")); } else { console.log(clc.red("No param specified!")); console.log(clc.white("Enter --help to see manual.")); }