UNPKG

@microbs.io/cli

Version:
70 lines (62 loc) 1.8 kB
/* * plugins.js * * Load plugins and persist them to context. */ // Standard packages const path = require('path') // Main packages const { config, context, logger } = require('@microbs.io/core') // Load a plugin const loadPlugin = (name) => { if (!name) return null return require(`@microbs.io/plugin-${name}`) } // Load all plugins invoked in config.yaml const load = () => { // Attempt to load each plugin const failures = [] const pluginTypes = [ 'kubernetes', 'observability', 'alerts' ] for (var i in pluginTypes) { var failure = false // Require plugin module let pluginType = pluginTypes[i] let name = config.get(`deployment.plugins.${pluginType}`) if (!name) continue try { let plugin = loadPlugin(name) let pluginPath = path.dirname(require.resolve(`@microbs.io/plugin-${name}/package.json`)) if (plugin && pluginPath) { context.set(`plugins.${pluginType}`, plugin) context.set(`path.plugin.${pluginType}`, pluginPath) } else { failure = true } } catch (e) { failure = true if (!e.message.startsWith(`Cannot find module '@microbs.io/plugin-`)) { logger.error(e) process.exit(1) } } if (failure) failures.push(name) } if (failures.length) { logger.error(``) logger.error(`The following plugin${ failures.length === 1 ? ' is' : 's are' } not installed:`) logger.error(``) logger.error(` ${failures.join('\n ')}`) logger.error(``) logger.error(`Run this command to install ${ failures.length === 1 ? 'it' : 'them' }:`) logger.error(``) logger.error(` microbs plugins install ${failures.join(' ')}`) logger.error(``) process.exit(1) } } module.exports = { load: load }