8000 [Plugin] install plugin's depedencies · heyunjun/leetcode-cli@0082de4 · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 0082de4

Browse files
committed
[Plugin] install plugin's depedencies
Signed-off-by: Eric Wang <skygragon@gmail.com>
1 parent 77d615a commit 0082de4

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

lib/commands/plugin.js

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ var fs = require('fs');
22
var path = require('path');
33

44
var h = require('../helper');
5-
var chalk = require('../chalk');
65
var log = require('../log');
76
var Plugin = require('../plugin');
87
var session = require('../session');
@@ -38,17 +37,33 @@ var cmd = {
3837
}
3938
};
4039

40+
function install(name) {
41+
// copy to plugins folder
42+
var newname = path.join(Plugin.dir, path.basename(name));
43+
var src = fs.createReadStream(name);
44+
src.pipe(fs.createWriteStream(newname));
45+
src.on('end', function() {
46+
log.debug('copied to ' + newname);
47+
48+
// install dependencies
49+
var plugin = require(path.relative(__dirname, newname));
50+
if (plugin.deps.length === 0) return;
51+
52+
var cmd = 'npm install --save ' + plugin.deps.join(' ');
53+
log.debug(cmd);
54+
require('child_process').execSync(cmd, {
55+
cwd: path.resolve(__dirname, '../..')
56+
});
57+
});
58+
}
59+
4160
cmd.handler = function(argv) {
4261
session.argv = argv;
4362
var name = argv.name;
4463

4564
if (argv.install) {
46-
if (!name || !fs.existsSync(name))
47-
return log.error('Plugin not found!');
48-
49-
var newName = path.join(Plugin.dir, path.basename(name));
50-
fs.createReadStream(name).pipe(fs.createWriteStream(newName));
51-
return;
65+
if (!name || !fs.existsSync(name)) return log.error('Plugin not found!');
66+
return install(name);
5267
}
5368

5469
var plugins = Plugin.plugins;
@@ -65,8 +80,7 @@ cmd.handler = function(argv) {
6580
return;
6681
}
6782

68-
if (plugins.length === 0)
69-
return log.error('Plugin not found!');
83+
if (plugins.length === 0) return log.error('Plugin not found!');
7084

7185
var plugin = plugins[0];
7286
var oldname = Plugin.fullpath(plugin.file);

lib/plugin.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ var h = require('./helper');
66
var config = require('./config');
77
var log = require('./log');
88

9-
function Plugin(id, name, ver, desc) {
9+
function Plugin(id, name, ver, desc, deps) {
1010
this.id = id;
1111
this.name = name;
1212
this.ver = ver || 'default';
1313
this.desc = desc;
1414
this.enabled = true;
15+
this.deps = deps || [];
1516
}
1617

1718
Plugin.prototype.init = function() {

0 commit comments

Comments
 (0)
0