@feflow/cli
Version:
A front-end flow tool.
89 lines • 3.83 kB
JavaScript
;
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolvePlugin = void 0;
var fs_1 = __importDefault(require("fs"));
var chalk_1 = __importDefault(require("chalk"));
var osenv_1 = __importDefault(require("osenv"));
var path_1 = __importDefault(require("path"));
var compose_1 = __importDefault(require("./compose"));
var command_picker_1 = require("../command-picker");
var logger_1 = __importDefault(require("../logger"));
var plugin_1 = require("../universal-pkg/schema/plugin");
var yaml_1 = require("../../shared/yaml");
var constant_1 = require("../../shared/constant");
function applyPlugins(plugins) {
return function (ctx) {
if (!plugins.length) {
return;
}
var pickConfig = new command_picker_1.CacheController(ctx);
var chain = plugins.map(function (name) {
var home = path_1.default.join(osenv_1.default.home(), constant_1.FEFLOW_ROOT);
var pluginPath = path_1.default.join(home, 'node_modules', name);
pickConfig.registerSubCommand(command_picker_1.CommandType.PLUGIN_TYPE, ctx.commander.store, name);
try {
ctx.logger.debug('Plugin loaded: %s', chalk_1.default.magenta(name));
var pluginLogger = (0, logger_1.default)({
debug: Boolean(ctx.args.debug),
silent: Boolean(ctx.args.silent),
name: name,
});
// eslint-disable-next-line @typescript-eslint/no-require-imports
return require(pluginPath)(Object.assign({}, ctx, { logger: pluginLogger }));
}
catch (err) {
ctx.fefError.printError({ error: err, msg: 'command load failed: %s', pluginPath: pluginPath });
}
return [];
});
compose_1.default.apply(void 0, __spreadArray([], __read(chain), false));
pickConfig.registerSubCommand(command_picker_1.CommandType.PLUGIN_TYPE, ctx.commander.store);
pickConfig.updateCache(command_picker_1.CommandType.PLUGIN_TYPE);
};
}
exports.default = applyPlugins;
function resolvePlugin(ctx, repoPath) {
var pluginFile = path_1.default.join(repoPath, constant_1.UNIVERSAL_PLUGIN_CONFIG);
var exists = fs_1.default.existsSync(pluginFile);
if (!exists) {
throw new Error("the ".concat(constant_1.UNIVERSAL_PLUGIN_CONFIG, " file was not found"));
}
var config;
try {
config = (0, yaml_1.parseYaml)(pluginFile);
}
catch (e) {
throw new Error("the ".concat(constant_1.UNIVERSAL_PLUGIN_CONFIG, " file failed to resolve, please check the syntax, e: ").concat(e));
}
return new plugin_1.Plugin(ctx, repoPath, config);
}
exports.resolvePlugin = resolvePlugin;
//# sourceMappingURL=apply-plugins.js.map