Skip to content

Commit 06f2592

Browse files
committedJul 25, 2017
[Plugin] add plugin command.
Signed-off-by: Eric Wang <skygragon@gmail.com>
1 parent fa69ce2 commit 06f2592

File tree

6 files changed

+71
-5
lines changed

6 files changed

+71
-5
lines changed
 

‎lib/commands/plugin.js

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
var fs = require('fs');
2+
var path = require('path');
3+
4+
var _ = require('underscore');
5+
var sprintf = require('sprintf-js').sprintf;
6+
7+
var h = require('../helper');
8+
var log = require('../log');
9+
var Plugin = require('../plugin');
10+
11+
var cmd = {
12+
command: 'plugin [name]>',
13+
desc: 'show plugins',
14+
builder: {
15+
install: {
16+
alias: 'i',
17+
type: 'boolean',
18+
describe: 'Install plugin',
19+
default: false
20+
},
21+
delete: {
22+
alias: 'd',
23+
type: 'boolean',
24+
describe: 'Delete plugin',
25+
default: false
26+
}
27+
}
28+
};
29+
30+
cmd.handler = function(argv) {
31+
var name = argv.name;
32+
33+
if (argv.install) {
34+
if (!name || !fs.existsSync(name))
35+
return log.error('Plugin not found!');
36+
37+
var newName = path.resolve(__dirname, '../plugins/' + path.basename(name));
38+
fs.createReadStream(name).pipe(fs.createWriteStream(newName));
39+
return;
40+
}
41+
42+
if (argv.delete) {
43+
var f = _.find(h.getDirData(['lib', 'plugins']), function(f) {
44+
return f.data !== null && f.data.name === name;
45+
});
46+
if (!f) return log.error('Plugin not found!');
47+
48+
var fullpath = path.resolve(__dirname, '../plugins/' + f.name + '.js');
49+
fs.unlink(fullpath, function(e) {
50+
if (e) log.error(e.message);
51+
});
52+
return;
53+
}
54+
55+
var plugins = Plugin.plugins;
56+
if (name) {
57+
plugins = plugins.filter(function(p) {
58+
return p.name === name;
59+
});
60+
}
61+
plugins.forEach(function(p) {
62+
log.info(sprintf('%-20s %-15s %s', p.name, p.ver, p.desc));
63+
});
64+
};
65+
66+
module.exports = cmd;

‎lib/commands/version.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ cmd.handler = function(argv) {
6565

6666
log.info('\n[Plugins]');
6767
_.each(Plugin.plugins, function(p, k) {
68-
prettyLine(p.name, 'v' + p.ver);
68+
prettyLine(p.name, p.ver);
6969
});
7070
};
7171

‎lib/plugin.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ var log = require('./log');
66
function Plugin(id, name, ver, desc) {
77
this.id = id;
88
this.name = name;
9-
this.ver = ver;
9+
this.ver = ver || 'default';
1010
this.desc = desc;
1111
this.next = null;
1212
}

‎lib/plugins/cache.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ var log = require('../log');
66
var Plugin = require('../plugin');
77
var session = require('../session');
88

9-
var plugin = new Plugin(20, 'Cache', '2017.07.24', 'Plugin to provide local cache.');
9+
var plugin = new Plugin(20, 'cache', '', 'Plugin to provide local cache.');
1010

1111
plugin.init = function() {
1212
cache.init();

‎lib/plugins/leetcode.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ var Plugin = require('../plugin');
1010
var queue = require('../queue');
1111
var session = require('../session');
1212

13-
var plugin = new Plugin(10, 'Leetcode Client', '2017.07.24',
13+
var plugin = new Plugin(10, 'leetcode', '',
1414
'Plugin to talk with leetcode APIs.');
1515

1616
// update options with user credentials

‎lib/plugins/retry.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ var log = require('../log');
33
var Plugin = require('../plugin');
44
var session = require('../session');
55

6-
var plugin = new Plugin(30, 'Retry', '2017.07.24',
6+
var plugin = new Plugin(30, 'retry', '',
77
'Plugin to retry last failed request if AUTO_LOGIN is on.');
88

99
var count = {};

0 commit comments

Comments
 (0)
Please sign in to comment.