UNPKG

reg-suit-core

Version:

See https://github.com/Quramy/reg-suit .

105 lines 4.19 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RegSuitCore = void 0; const path_1 = __importDefault(require("path")); const reg_suit_util_1 = require("reg-suit-util"); const config_manager_1 = require("./config-manager"); const plugin_manager_1 = require("./plugin-manager"); const processor_1 = require("./processor"); class RegSuitCore { constructor(opt = {}) { this.logger = (0, reg_suit_util_1.createLogger)(); if (opt.logLevel) { this.logger.setLevel(opt.logLevel); } this.noEmit = !!opt.noEmit; this._configManager = new config_manager_1.ConfigManager({ logger: this.logger, noEmit: this.noEmit, configFileName: opt.configFileName, }); } get config() { return this._configManager.config; } createQuestions(opt) { this._pluginManager = new plugin_manager_1.PluginManager(this.logger, this.noEmit, this.config, this._getWorkingDirs()); return this._pluginManager.createQuestions(opt); } persistMergedConfig(opt, confirm) { const baseConfig = this.config; const mergedConfig = { core: opt.core ? Object.assign(Object.assign({}, baseConfig.core), opt.core) : baseConfig.core, plugins: Object.assign({}, baseConfig.plugins), }; opt.pluginConfigs.forEach(pc => { mergedConfig.plugins[pc.name] = baseConfig.plugins ? Object.assign(Object.assign({}, baseConfig.plugins[pc.name]), pc.config) : pc.config; }); this.logger.info("Configuration:"); this.logger.info(JSON.stringify(mergedConfig, null, 2)); if (JSON.stringify(baseConfig) === JSON.stringify(mergedConfig)) { // If there is no difference, exit quietly. return Promise.resolve(); } if (this.noEmit) return Promise.resolve(); return confirm(mergedConfig).then(result => { if (result) this._configManager.writeConfig(mergedConfig); }); } createProcessor() { const replacedConfig = this._configManager.replaceEnvValue(); this.logger.verbose("Config: ", replacedConfig); this._pluginManager = new plugin_manager_1.PluginManager(this.logger, this.noEmit, replacedConfig, this._getWorkingDirs()); this._pluginManager.loadPlugins(); const keyGenerator = this._pluginManager.initKeyGenerator(); const publisher = this._pluginManager.initPublisher(); const notifiers = this._pluginManager.initNotifiers(); this.logger.verbose("userDirs: ", this._getUserDirs()); this.logger.verbose("workingDirs: ", this._getWorkingDirs()); return new processor_1.RegProcessor({ coreConfig: this._configManager.config.core, workingDirs: this._getWorkingDirs(), logger: this.logger, noEmit: this.noEmit, options: { keyGenerator, publisher, notifiers, userDirs: this._getUserDirs(), }, }); } getDirectoryInfo() { return { prjDir: this._getPrjDir(), workingDirs: this._getWorkingDirs(), userDirs: this._getUserDirs(), }; } _getPrjDir() { return reg_suit_util_1.fsUtil.prjRootDir(); } _getWorkingDirs() { const base = path_1.default.resolve(reg_suit_util_1.fsUtil.prjRootDir(), this.config.core.workingDir); return { base, actualDir: path_1.default.join(base, "actual"), expectedDir: path_1.default.join(base, "expected"), diffDir: path_1.default.join(base, "diff"), }; } _getUserDirs() { const actualDir = path_1.default.resolve(reg_suit_util_1.fsUtil.prjRootDir(), this.config.core.actualDir); return { actualDir, }; } } exports.RegSuitCore = RegSuitCore; //# sourceMappingURL=core.js.map