UNPKG

roost

Version:

System provisioning toolkit.

42 lines (29 loc) 890 B
path = require 'path' # --- exports.obtain = (manifest) -> return if not manifest.plugins? true_values = [1, '1', true, 'true'] if Array.isArray manifest.plugins plugins = manifest.plugins else plugins = [name for name, value of manifest.plugins if value in true_values] root = path.dirname manifest.meta.location failure = (err) -> throw new Error "cannot load plugin #{name}" if err.code != 'MODULE_NOT_FOUND' return plugins.map (name) -> try plugin = require path.resolve root, name catch e failure e try plugin = require path.resolve path.join(root, 'node_modules'), name catch e failure e try plugin = require name catch e failure e throw e if plugin.getRoost? plugin = plugin.getRoost manifest throw new Error "plugins #{name} is not comptabile" if not plugin.roost? return plugin