UNPKG

create-testplane

Version:

A tool for fast and simple Testplane configuration

65 lines 3.02 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigBuilder = void 0; const lodash_1 = __importDefault(require("lodash")); const fsUtils_1 = require("./fsUtils"); const pluginsConfig_1 = __importDefault(require("./pluginsConfig")); const defaultToolOpts_1 = __importDefault(require("./constants/defaultToolOpts")); const defaultTestplaneConfig_1 = __importDefault(require("./constants/defaultTestplaneConfig")); const configTemplates_1 = require("./utils/configTemplates"); const utils_1 = require("./utils"); class ConfigBuilder { static create(createBaseConfig, opts) { return new this(createBaseConfig, opts); } constructor(createBaseConfig, opts = { language: defaultToolOpts_1.default.language }) { this._config = createBaseConfig ? createBaseConfig(defaultTestplaneConfig_1.default, opts) : defaultTestplaneConfig_1.default; this._config.__language = opts.language; this._config.__template = (0, configTemplates_1.getTemplate)(opts.language); } connectTestingLibrary() { (0, utils_1.connectTestingLibraryToTestplaneConfig)(this._config); } async handleGeneralQuestions(promts, handlers, { path, extraQuestions }) { const answers = { _path: path, _language: this._config.__template.language, }; if (lodash_1.default.isEmpty(promts) || lodash_1.default.isEmpty(handlers)) { return answers; } const defaults = promts.reduce((acc, prompt) => { if (!lodash_1.default.isUndefined(prompt.default)) { lodash_1.default.set(acc, [prompt.name], prompt.default); } return acc; }, {}); const promptsToAsk = extraQuestions ? promts : promts.filter(prompt => lodash_1.default.isUndefined(prompt.default)); const inquirerAnswers = {}; for (const prompt of promptsToAsk) { const result = await (0, utils_1.inquirerPrompt)(prompt); inquirerAnswers[prompt.name] = result; } Object.assign(answers, defaults, inquirerAnswers, answers); for (const handler of handlers) { this._config = await handler(this._config, answers); } return answers; } async configurePlugins({ pluginNames, createPluginsConfig, generalAnswers }) { var _a; const pluginsConfig = createPluginsConfig ? createPluginsConfig(pluginsConfig_1.default) : pluginsConfig_1.default; (_a = this._config).plugins || (_a.plugins = {}); for (const plugin of pluginNames) { await pluginsConfig[plugin](this._config, generalAnswers); } } async write(dirPath) { return (0, fsUtils_1.writeTestplaneConfig)(dirPath, this._config); } } exports.ConfigBuilder = ConfigBuilder; //# sourceMappingURL=configBuilder.js.map