-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.js
More file actions
executable file
·92 lines (81 loc) · 2.76 KB
/
index.js
File metadata and controls
executable file
·92 lines (81 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/env node
const program = require('commander');
const newProject = require('./lib/new/newProject');
const logger = require('./lib/utils/logger');
const {exec} = require('child_process');
const newModel = require('./lib/generate/generate.model');
const newController = require('./lib/generate/generate.controller');
const newRoute = require('./lib/generate/generate.route');
program
.command('new <name>')
.description('Create new project.')
.option('-d, --debug [debug]', 'active mode debug')
.action(async (name, options) => {
if (!options.name) options.name = 'new-project';
await newProject
.new(name)
.catch(err => logger.error((options.debug) ? err.stack : err));
process.exit();
});
program
.command('generate <type> <name>')
.description('generate new file')
.option('-m, --methods [methods]', 'List methods for new controller like (create,remove,find,update)')
.option('-p, --properties [properties]', 'For model list properties like (firstname:String,age:Number)')
.option('-v, --verbs [verbs]', 'Set verbs for your route like (get,post)')
.option('-c, --controller [controller]', 'Set the name of the controller which contain handlers')
.option('-d, --debug [debug]', 'active mode debug')
.action(async (type, name, options) => {
switch (type) {
case 'controller':
await newController.new(name, options)
.catch(error => logger.error((options.debug) ? error.stack : error));
break;
case 'model':
await newModel.new(name, options)
.catch(error => logger.error((options.debug) ? error.stack : error));
break;
case 'route':
await newRoute.new(name, options)
.catch(error => logger.error((options.debug) ? error.stack : error));
break;
case 'api':
try {
await newController.new(name, options);
await newModel.new(name, options);
await newRoute.new(name, options);
} catch (error) {
logger.error((options.debug) ? error.stack : error);
}
break;
default:
break;
}
process.exit();
});
// program
// .command('*', 'default', {isDefault: true})
// .action(() => {
//
// exec('hc new --help', (error, stdout, stderr) => {
// if (error) {
// logger.error(`exec error: ${error}`);
// return;
// }
// logger.log(`stdout: ${stdout}`);
// logger.log(`stderr: ${stderr}`);
// });
//
// exec('hc generate --help', (error, stdout, stderr) => {
// if (error) {
// logger.error(`exec error: ${error}`);
// return;
// }
// logger.log(`stdout: ${stdout}`);
// logger.log(`stderr: ${stderr}`);
// });
//
// process.exit();
// });
//
program.parse(process.argv);