1 | (function(){
|
2 | var fs=require('./fs');
|
3 | var syspath = require("path");
|
4 | var config=require('./config');
|
5 | var optimist = require("optimist");
|
6 |
|
7 | var existsCommands=function(){
|
8 | var cmds=fs.dir(__dirname+'/commands');
|
9 | var ret={};
|
10 |
|
11 | cmds.forEach(function(v,i){
|
12 | if(/.+\.js$/i.test(v)){
|
13 | ret[v.replace(/\.js$/i,'').toLowerCase()]=v;
|
14 | }
|
15 | });
|
16 | return ret;
|
17 | }();
|
18 |
|
19 | var str=' ';
|
20 | var help_info=function(name,describe){
|
21 | return ' '+name+str.slice(name.length)+'# '+describe;
|
22 | }
|
23 |
|
24 | exports.exits=function(cmd){
|
25 | return !!existsCommands[String(cmd).toLowerCase()];
|
26 | };
|
27 |
|
28 | exports.get=function(cmd){
|
29 | if(existsCommands[String(cmd).toLowerCase()]){
|
30 | return require(syspath.join(__dirname,'/commands/'+existsCommands[String(cmd).toLowerCase()]));
|
31 | }
|
32 | };
|
33 |
|
34 | exports.run=function(cmd){
|
35 | var _cmd=exports.get(cmd), options=optimist;
|
36 | if(_cmd.usage){
|
37 | _cmd.usage(optimist);
|
38 | }
|
39 |
|
40 | optimist.alias('h','help');
|
41 | options=optimist.describe('h','查看帮助').argv;
|
42 |
|
43 | if(options.help){
|
44 | this.help(cmd);
|
45 | }else{
|
46 | _cmd.run(options);
|
47 | }
|
48 | };
|
49 |
|
50 | exports.help=function(cmd){
|
51 | console.info('\n========================= ALIEN '+config.version+' =========================\n');
|
52 |
|
53 | if(cmd){
|
54 | var _cmd=exports.get(cmd);
|
55 | console.info(help_info(cmd,_cmd.description));
|
56 | console.info('');
|
57 | optimist.showHelp();
|
58 | }else{
|
59 | for( var c in existsCommands){
|
60 | var _cmd=this.get(c);
|
61 | if(_cmd.description){
|
62 | console.info(help_info(c,_cmd.description));
|
63 | }
|
64 | }
|
65 | console.info('\nalien [cmd] -h, --help 查看具体命令帮助');
|
66 | }
|
67 | };
|
68 |
|
69 | }).call(this); |
\ | No newline at end of file |