UNPKG

navy

Version:

Quick and powerful development environments using Docker and Docker Compose

41 lines (30 loc) 1.41 kB
"use strict"; 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); }); }