create-testplane
Version:
A tool for fast and simple Testplane configuration
65 lines • 3.02 kB
JavaScript
;
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