UNPKG

kick

Version:

Kickstarter and generator for AngularJS based on ES6, webpack and best practices

101 lines (87 loc) 2.78 kB
'use strict'; const Logger = require('../logger'); const generate = require('../generators/generators'); const message = require('../messages'); const changeCase = require('change-case'); module.exports = function () { const type = process.argv[3]; const name = process.argv[4]; process.argv.splice(0,5); let args = process.argv; const opts = {}; // Move all option names (with - or -- prefix) to opts, // and leave the rest of the arguments on args args = args.filter((arg) => { if (arg.match(/^-/) || arg.match(/^--/)) { opts[changeCase.camel(arg.replace(/^--/, '').replace(/^-/, ''))] = true; } else { return arg; } }); switch (type) { case 'service': case 'srv': return generateType('service', name, args, opts); case 'model': case 'm': return generateType('model', name, args, opts); case 'directive': case 'drv': return directive(name, args, opts); case 'component': case 'cmp': return generateType('component', name, args, opts); case 'filter': case 'f': return generateType('filter', name, args, opts); case 'state': case 's': return state(name, args, opts); case 'partial': case 'p': return partial(name, args, opts); case 'style': return generateType('style', name, args, opts); case 'config': case 'cfg': return generateType('config', name, args, opts); case 'environment': case 'env': return generateType('environment', name, args, opts); default: Logger.warn(message.generate.whatToGenerate); Logger.log(message.generate.help); } }; function directive(name, args, opts) { const template = (opts.template || opts.t); generate.directive(name, template); args.map((otherName) => generate.directive(otherName, template)); Logger.done(); } function state(name, args, opts) { const noController = (opts.noController || opts.nc || opts.anc || opts.nca); const abstract = (opts.abstract || opts.a || opts.anc || opts.nca); generate.state(name, noController, abstract); args.map((substate) => { if (substate.toLowerCase() === 'crud') { ['list', 'new', 'show', 'edit'].forEach((action) => { generate.state(name + '/' + action, null, null); }); } else { generate.state(name + '/' + substate, null, null); } }); Logger.done(); } function partial(name, args, opts) { const controller = (opts.controller || opts.c); generate.partial(name, controller); args.map((otherName) => generate.partial(otherName, controller)); Logger.done(); } function generateType(type, name, args, opts) { generate[type](name, opts); args.map((otherName) => generate[type](otherName, opts)); Logger.done(); }