navy
Version:
Quick and powerful development environments using Docker and Docker Compose
41 lines (30 loc) • 1.41 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.loadPlugins = loadPlugins;
var _bluebird = _interopRequireDefault(require("bluebird"));
var _invariant = _interopRequireDefault(require("invariant"));
const resolve = _bluebird.default.promisify(require('resolve'));
async function loadPlugins(navy, navyFile) {
const configProvider = await navy.getConfigProvider();
(0, _invariant.default)(configProvider, "NO_CONFIG_PROVIDER: Couldn't determine config provider for navy %s", navy.name);
const basedir = await configProvider.getNavyPath();
if (!navyFile.plugins) {
return [];
}
let pluginPaths;
try {
pluginPaths = await Promise.all(navyFile.plugins.map(async pluginName => resolve(pluginName, {
basedir
})));
} catch (ex) {
(0, _invariant.default)(false, "PLUGIN_RESOLVE_ERR: Could not resolve some of the plugins in Navyfile.js: %s", navyFile.plugins.join(', '));
} // $FlowIgnore: entry point to plugin has to be dynamic
const plugins = pluginPaths.map(pluginPath => require(pluginPath));
return plugins.map((Plugin, index) => {
(0, _invariant.default)(typeof Plugin === 'function', "PLUGIN_DOESNT_EXPORT_FUNCTION: Plugin %s doesn't export a function as the entrypoint", navyFile.plugins[index]);
return Plugin(navy);
});
}