frontend/.pnpm-store/v3/files/34/1ad5a3c42c5f38ca042a1b0d3a249dcc3600896a9b7e73f4c0659e238766c83c0721ae4af6abcb30b4c983a0616c445581dd63457d87c700f841d371f27fc1

67 lines
2.1 KiB
Plaintext

const path = require('path');
const _ = require('lodash');
const requireCwd = require('import-cwd');
const debug = require('debug')('release-it:plugins');
const Version = require('./version/Version');
const Git = require('./git/Git');
const GitLab = require('./gitlab/GitLab');
const GitHub = require('./github/GitHub');
const npm = require('./npm/npm');
const pluginNames = ['npm', 'git', 'github', 'gitlab', 'version'];
const plugins = {
version: Version,
git: Git,
gitlab: GitLab,
github: GitHub,
npm: npm
};
const load = pluginName => {
let plugin = null;
try {
plugin = require(pluginName);
} catch (err) {
plugin = requireCwd(pluginName);
}
return [path.parse(pluginName).name, plugin];
};
module.exports.getPlugins = async (config, container) => {
const context = config.getContext();
const disabledPlugins = [];
const enabledExternalPlugins = await _.reduce(
context.plugins,
async (result, pluginConfig, pluginName) => {
const [name, Plugin] = load(pluginName);
const [namespace, options] = pluginConfig.length === 2 ? pluginConfig : [name, pluginConfig];
config.setContext({ [namespace]: options });
if (await Plugin.isEnabled(options)) {
const instance = new Plugin({ namespace, options: config.getContext(), container });
debug({ namespace, options: instance.options });
(await result).push(instance);
disabledPlugins.push(..._.intersection(pluginNames, _.castArray(Plugin.disablePlugin())));
}
return result;
},
[]
);
const enabledPlugins = await pluginNames.reduce(async (result, plugin) => {
if (plugin in plugins && !disabledPlugins.includes(plugin)) {
const Plugin = plugins[plugin];
const pluginOptions = context[plugin];
if (await Plugin.isEnabled(pluginOptions)) {
const instance = new Plugin({ namespace: plugin, options: context, container });
debug({ namespace: plugin, options: instance.options });
(await result).push(instance);
}
}
return result;
}, []);
return [enabledPlugins, enabledExternalPlugins];
};