Skip to content

Commit fc29d65

Browse files
committed
[Plugin] prepare for auto install missing plugins.
* save existing plugins list. * enhance `plugin` command output. Signed-off-by: Eric Wang <[email protected]>
1 parent d149308 commit fc29d65

File tree

4 files changed

+29
-3
lines changed

4 files changed

+29
-3
lines changed

Diff for: lib/cli.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ cli.run = function() {
6363
initIcon();
6464
initLogLevel();
6565

66-
Plugin.init(core);
66+
if (Plugin.init(core))
67+
Plugin.save();
6768

6869
process.stdout.on('error', function(e) {
6970
if (e.code === 'EPIPE') process.exit();

Diff for: lib/commands/plugin.js

+16-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
'use strict';
22
var fs = require('fs');
33

4+
var sprintf = require('sprintf-js').sprintf;
5+
46
var h = require('../helper');
57
var chalk = require('../chalk');
68
var config = require('../config');
@@ -60,6 +62,17 @@ const cmd = {
6062
}
6163
};
6264

65+
function printPlugins(plugins) {
66+
log.info(chalk.gray(sprintf(' %6s %-18s %-15s %s', 'Active', 'Name', 'Version', 'Desc')));
67+
log.info(chalk.gray('-'.repeat(100)));
68+
69+
plugins = plugins || Plugin.plugins;
70+
for (let p of plugins)
71+
log.printf(' %s %-18s %-15s %s',
72+
h.prettyText('', p.enabled), p.name, p.ver, p.desc);
73+
Plugin.save();
74+
}
75+
6376
cmd.handler = function(argv) {
6477
session.argv = argv;
6578

@@ -83,17 +96,18 @@ cmd.handler = function(argv) {
8396

8497
if (argv.enable) {
8598
plugin.enable(true);
99+
printPlugins();
86100
} else if (argv.disable) {
87101
plugin.enable(false);
102+
printPlugins();
88103
} else if (argv.delete) {
89104
fs.unlink(fullpath, function(e) {
90105
if (e) log.error(e.message);
91106
});
92107
} else if (argv.config) {
93108
log.info(JSON.stringify(config.plugins[name] || {}, null, 2));
94109
} else {
95-
for (let p of plugins)
96-
log.printf('%s %-18s %-15s %s', h.prettyText('', p.enabled), p.name, p.ver, p.desc);
110+
printPlugins(plugins);
97111
}
98112
};
99113

Diff for: lib/helper.js

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ const h = {};
5353
h.KEYS = {
5454
user: '../user',
5555
stat: '../stat',
56+
plugins: '../plugins',
5657
problems: 'problems',
5758
problem: p => p.fid + '.' + p.slug + '.' + p.category
5859
};

Diff for: lib/plugin.js

+10
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ var _ = require('underscore');
77
var request = require('request');
88

99
var h = require('./helper');
10+
var cache = require('./cache');
1011
var config = require('./config');
1112
var log = require('./log');
1213

@@ -95,6 +96,7 @@ Plugin.init = function(head) {
9596
last = p;
9697
}
9798
Plugin.plugins = plugins;
99+
return true;
98100
};
99101

100102
Plugin.copy = function(src, cb) {
@@ -138,4 +140,12 @@ Plugin.install = function(name, cb) {
138140
});
139141
};
140142

143+
Plugin.save = function() {
144+
const data = Plugin.plugins
145+
.map(x => {
146+
return {name: x.name, enabled: x.enabled}
147+
});
148+
cache.set(h.KEYS.plugins, data);
149+
};
150+
141151
module.exports = Plugin;

0 commit comments

Comments
 (0)