diff options
Diffstat (limited to 'lib/generate/plugin.js')
-rw-r--r-- | lib/generate/plugin.js | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/generate/plugin.js b/lib/generate/plugin.js index f753834..b51d1ff 100644 --- a/lib/generate/plugin.js +++ b/lib/generate/plugin.js @@ -67,6 +67,19 @@ Plugin.prototype.resolveFile = function(filename) { return path.resolve(path.dirname(require.resolve(this.name)), filename); }; +// Resolve file path +Plugin.prototype.callHook = function(name, args) { + var hookFunc = this.infos.hooks? this.infos.hooks[name] : null; + args = _.isArray(args) ? args : [args]; + + if (!hookFunc) return Q(); + + return Q() + .then(function() { + return hookFunc.apply(null, args); + }); +}; + // Extract data from a list of plugin Plugin.fromList = function(names) { var failed = []; @@ -98,7 +111,14 @@ Plugin.fromList = function(names) { return Q({ 'list': plugins, - 'resources': resources + 'resources': resources, + 'hook': function(name, args) { + return _.reduce(plugins, function(prev, plugin) { + return prev.then(function() { + return plugin.callHook(name, args); + }) + }, Q()); + } }); }; |