@@ -17,15 +17,16 @@ var diveSync = require('diveSync'),
17
17
cleanHtml = require ( 'js-beautify' ) . html ,
18
18
inherits = require ( 'util' ) . inherits ,
19
19
pm = require ( './plugin_manager' ) ,
20
+ fs = require ( 'fs-extra' ) ,
20
21
plutils = require ( './utilities' ) ;
21
22
22
23
var EventEmitter = require ( 'events' ) . EventEmitter ;
23
24
24
- function buildPatternData ( dataFilesPath , fs ) {
25
+ function buildPatternData ( dataFilesPath , fsDep ) {
25
26
var dataFiles = glob . sync ( dataFilesPath + '*.json' , { "ignore" : [ dataFilesPath + 'listitems.json' ] } ) ;
26
27
var mergeObject = { } ;
27
28
dataFiles . forEach ( function ( filePath ) {
28
- var jsonData = fs . readJSONSync ( path . resolve ( filePath ) , 'utf8' ) ;
29
+ var jsonData = fsDep . readJSONSync ( path . resolve ( filePath ) , 'utf8' ) ;
29
30
mergeObject = _ . merge ( mergeObject , jsonData ) ;
30
31
} ) ;
31
32
return mergeObject ;
@@ -83,18 +84,40 @@ function checkConfiguration(patternlab) {
83
84
* @param patternlab - global data store
84
85
*/
85
86
function initializePlugins ( patternlab ) {
87
+
88
+ if ( ! patternlab . config . plugins ) { return ; }
89
+
86
90
var plugin_manager = new pm ( patternlab . config , path . resolve ( __dirname , '../../patternlab-config.json' ) ) ;
87
91
var foundPlugins = plugin_manager . detect_plugins ( ) ;
88
92
89
93
if ( foundPlugins && foundPlugins . length > 0 ) {
90
94
91
95
for ( var i = 0 ; i < foundPlugins . length ; i ++ ) {
92
- var plugin = plugin_manager . load_plugin ( foundPlugins [ i ] ) ;
96
+
97
+ let pluginKey = foundPlugins [ i ] ;
98
+
99
+ console . log ( pluginKey ) ;
100
+ console . log ( patternlab . config . plugins [ pluginKey ] ) ;
101
+
102
+ var plugin = plugin_manager . load_plugin ( pluginKey ) ;
93
103
plugin ( patternlab ) ;
94
104
}
95
105
}
96
106
}
97
107
108
+ /**
109
+ * Installs a given plugin. Assumes it has already been pulled down via npm
110
+ * @param pluginName - the name of the plugin
111
+ */
112
+ function installPlugin ( pluginName ) {
113
+ //get the config
114
+ var configPath = path . resolve ( process . cwd ( ) , 'patternlab-config.json' ) ;
115
+ var config = fs . readJSONSync ( path . resolve ( configPath ) , 'utf8' ) ;
116
+ var plugin_manager = new pm ( config , configPath ) ;
117
+
118
+ plugin_manager . install_plugin ( pluginName ) ;
119
+ }
120
+
98
121
function PatternLabEventEmitter ( ) {
99
122
EventEmitter . call ( this ) ;
100
123
}
@@ -104,7 +127,6 @@ var patternlab_engine = function (config) {
104
127
'use strict' ;
105
128
106
129
var JSON5 = require ( 'json5' ) ,
107
- fs = require ( 'fs-extra' ) ,
108
130
pa = require ( './pattern_assembler' ) ,
109
131
pe = require ( './pattern_exporter' ) ,
110
132
lh = require ( './lineage_hunter' ) ,
@@ -123,7 +145,6 @@ var patternlab_engine = function (config) {
123
145
124
146
checkConfiguration ( patternlab ) ;
125
147
126
- //todo: determine if this is the best place to wire up plugins
127
148
initializePlugins ( patternlab ) ;
128
149
129
150
var paths = patternlab . config . paths ;
@@ -504,6 +525,9 @@ var patternlab_engine = function (config) {
504
525
} ,
505
526
loadstarterkit : function ( starterkitName , clean ) {
506
527
loadStarterKit ( starterkitName , clean ) ;
528
+ } ,
529
+ installplugin : function ( pluginName ) {
530
+ installPlugin ( pluginName ) ;
507
531
}
508
532
} ;
509
533
} ;
0 commit comments