UNPKG

2.78 kBJavaScriptView Raw
1'use strict';
2
3const Logger = require('../logger');
4const generate = require('../generators/generators');
5const message = require('../messages');
6const changeCase = require('change-case');
7
8module.exports = function () {
9 const type = process.argv[3];
10 const name = process.argv[4];
11
12 process.argv.splice(0,5);
13 let args = process.argv;
14 const opts = {};
15
16 // Move all option names (with - or -- prefix) to opts,
17 // and leave the rest of the arguments on args
18 args = args.filter( arg => {
19 if (arg.match(/^-/) || arg.match(/^--/)) {
20 opts[changeCase.camel(arg.replace(/^--/, '').replace(/^-/, ''))] = true;
21 } else {
22 return arg;
23 }
24 });
25
26 switch (type) {
27 case 'service':
28 case 'srv':
29 generateType('service', name, args);
30 break;
31 case 'model':
32 case 'm':
33 generateType('model', name, args);
34 break;
35 case 'directive':
36 case 'drv':
37 directive(name, args, opts);
38 break;
39 case 'component':
40 case 'cmp':
41 generateType('component', name, args);
42 break;
43 case 'filter':
44 case 'f':
45 generateType('filter', name, args);
46 break;
47 case 'state':
48 case 's':
49 state(name, args, opts);
50 break;
51 case 'partial':
52 case 'p':
53 partial(name, args, opts);
54 break;
55 case 'style':
56 generateType('style', name, args);
57 break;
58 case 'config':
59 case 'cfg':
60 generateType('config', name, args);
61 break;
62 case 'environment':
63 case 'env':
64 generateType('environment', name, args);
65 break;
66 default:
67 Logger.warn(message.generate.whatToGenerate);
68 Logger.log(message.generate.help);
69 }
70};
71
72function directive(name, args, opts) {
73 const template = (opts.template || opts.t);
74 generate.directive(name, template);
75 args.map((otherName) => generate.directive(otherName, template));
76 Logger.done();
77}
78
79function state(name, args, opts) {
80 const noController = (opts.noController || opts.nc || opts.anc || opts.nca);
81 const abstract = (opts.abstract || opts.a || opts.anc || opts.nca);
82
83 generate.state(name, noController, abstract);
84
85 args.map( substate =>{
86 if (substate.toLowerCase() === 'crud') {
87 ['list', 'new', 'show', 'edit'].forEach( action => {
88 generate.state(name + '/' + action, null, null);
89 });
90 } else {
91 generate.state(name + '/' + substate, null, null);
92 }
93 });
94 Logger.done();
95}
96
97function partial(name, args, opts) {
98 const controller = (opts.controller || opts.c);
99 generate.partial(name, controller);
100
101 args.map((otherName) => generate.partial(otherName, controller));
102 Logger.done();
103}
104
105function generateType(type, name, args) {
106 generate[type](name);
107 args.map((otherName) => generate[type](otherName));
108 Logger.done();
109}