1 | 'use strict';
|
2 |
|
3 | const Logger = require('../logger');
|
4 | const generate = require('../generators/generators');
|
5 | const message = require('../messages');
|
6 | const changeCase = require('change-case');
|
7 |
|
8 | module.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 |
|
17 |
|
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 |
|
72 | function 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 |
|
79 | function 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 |
|
97 | function 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 |
|
105 | function generateType(type, name, args) {
|
106 | generate[type](name);
|
107 | args.map((otherName) => generate[type](otherName));
|
108 | Logger.done();
|
109 | }
|