@@ -2,7 +2,6 @@ var fs = require('fs');
22var path = require ( 'path' ) ;
33
44var h = require ( '../helper' ) ;
5- var chalk = require ( '../chalk' ) ;
65var log = require ( '../log' ) ;
76var Plugin = require ( '../plugin' ) ;
87var 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+
4160cmd . 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 ) ;
0 commit comments