Skip to content

Commit

Permalink
[Plugin] install plugin's depedencies
Browse files Browse the repository at this point in the history
Signed-off-by: Eric Wang <skygragon@gmail.com>
  • Loading branch information
skygragon committed Aug 10, 2017
1 parent 77d615a commit 0082de4
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 10 deletions.
32 changes: 23 additions & 9 deletions lib/commands/plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ var fs = require('fs');
var path = require('path');

var h = require('../helper');
var chalk = require('../chalk');
var log = require('../log');
var Plugin = require('../plugin');
var session = require('../session');
Expand Down Expand Up @@ -38,17 +37,33 @@ var cmd = {
}
};

function install(name) {
// copy to plugins folder
var newname = path.join(Plugin.dir, path.basename(name));
var src = fs.createReadStream(name);
src.pipe(fs.createWriteStream(newname));
src.on('end', function() {
log.debug('copied to ' + newname);

// install dependencies
var plugin = require(path.relative(__dirname, newname));
if (plugin.deps.length === 0) return;

var cmd = 'npm install --save ' + plugin.deps.join(' ');
log.debug(cmd);
require('child_process').execSync(cmd, {
cwd: path.resolve(__dirname, '../..')
});
});
}

cmd.handler = function(argv) {
session.argv = argv;
var name = argv.name;

if (argv.install) {
if (!name || !fs.existsSync(name))
return log.error('Plugin not found!');

var newName = path.join(Plugin.dir, path.basename(name));
fs.createReadStream(name).pipe(fs.createWriteStream(newName));
return;
if (!name || !fs.existsSync(name)) return log.error('Plugin not found!');
return install(name);
}

var plugins = Plugin.plugins;
Expand All @@ -65,8 +80,7 @@ cmd.handler = function(argv) {
return;
}

if (plugins.length === 0)
return log.error('Plugin not found!');
if (plugins.length === 0) return log.error('Plugin not found!');

var plugin = plugins[0];
var oldname = Plugin.fullpath(plugin.file);
Expand Down
3 changes: 2 additions & 1 deletion lib/plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ var h = require('./helper');
var config = require('./config');
var log = require('./log');

function Plugin(id, name, ver, desc) {
function Plugin(id, name, ver, desc, deps) {
this.id = id;
this.name = name;
this.ver = ver || 'default';
this.desc = desc;
this.enabled = true;
this.deps = deps || [];
}

Plugin.prototype.init = function() {
Expand Down

0 comments on commit 0082de4

Please sign in to comment.