UNPKG

1.66 kBJavaScriptView Raw
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