reg-suit-core
Version:
See https://github.com/Quramy/reg-suit .
105 lines • 4.19 kB
JavaScript
"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