rucken
Version:
Console tools and scripts for nx and not only that I (EndyKaufman) use to automate the workflow and speed up the development process
108 lines • 4.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.VersionUpdaterService = void 0;
const tslib_1 = require("tslib");
const common_1 = require("@nestjs/common");
const fs_1 = require("fs");
const log4js_1 = require("log4js");
const utils_service_1 = require("../utils/utils.service");
let VersionUpdaterService = class VersionUpdaterService {
utilsService;
static title = 'version-updater';
logger;
constructor(utilsService) {
this.utilsService = utilsService;
}
setLogger(command) {
this.logger = (0, log4js_1.getLogger)(command);
this.logger.level = utils_service_1.UtilsService.logLevel();
}
versionUpdaterHandler({ updatePackageVersion, updateDependenciesVersion, }) {
this.logger.info('Start update versions...');
this.logger.debug(`Config: ${JSON.stringify({
updatePackageVersion,
updateDependenciesVersion,
})}`);
const rootConfigPath = this.utilsService.resolveFilePath(utils_service_1.PACKAGE_JSON);
const projects = this.utilsService.getWorkspaceProjects();
for (const projectName of Object.keys(projects).filter((key) => !key.includes('-e2e'))) {
const project = projects[projectName];
if (project.root) {
this.logger.debug(`Process project "${projectName}" in ${project.root}`);
this.updateFolderPackageFromRootPackage({
rootConfigPath,
appConfigPath: `${project.root}/package.json`,
updatePackageVersion,
updateDependenciesVersion,
});
}
}
this.logger.info('End of update versions...');
}
updateFolderPackageFromRootPackage({ rootConfigPath, appConfigPath, updatePackageVersion, updateDependenciesVersion, }) {
this.logger.debug(`Start for ${JSON.stringify({
rootConfigPath,
appConfigPath,
})}`);
if (appConfigPath === rootConfigPath) {
throw new Error(`Source and destination are equal: ${appConfigPath}==${rootConfigPath}`);
}
let rootConfig;
let folderConfig;
try {
const content = (0, fs_1.readFileSync)(rootConfigPath).toString();
rootConfig = JSON.parse(content);
}
catch (error) {
throw new Error(`Wrong body of file ${rootConfigPath}`, { cause: error });
}
try {
const content = (0, fs_1.readFileSync)(appConfigPath).toString();
folderConfig = JSON.parse(content);
let shouldSave = false;
if (updatePackageVersion && rootConfig.version) {
folderConfig.version = rootConfig.version;
shouldSave = true;
}
if (updateDependenciesVersion) {
this.updateDependencies(folderConfig, rootConfig);
shouldSave = true;
}
if (shouldSave) {
(0, fs_1.writeFileSync)(appConfigPath, JSON.stringify(folderConfig, null, 2));
}
}
catch (_error) {
this.logger.warn(`Wrong body of file ${appConfigPath}`);
}
this.logger.debug(`End for ${JSON.stringify({
rootConfigPath,
appConfigPath,
})}`);
}
updateDependencies(folderConfig, rootConfig) {
if (folderConfig.peerDependencies && rootConfig.dependencies) {
for (const key of Object.keys(folderConfig.peerDependencies)) {
if (rootConfig.dependencies[key]) {
folderConfig.peerDependencies[key] = rootConfig.dependencies[key];
}
}
}
if (folderConfig.dependencies) {
for (const key of Object.keys(folderConfig.dependencies)) {
if (rootConfig.dependencies?.[key]) {
folderConfig.dependencies[key] = rootConfig.dependencies[key];
}
if (rootConfig.devDependencies?.[key]) {
folderConfig.dependencies[key] = rootConfig.devDependencies[key];
}
}
}
}
};
exports.VersionUpdaterService = VersionUpdaterService;
exports.VersionUpdaterService = VersionUpdaterService = tslib_1.__decorate([
(0, common_1.Injectable)(),
tslib_1.__metadata("design:paramtypes", [utils_service_1.UtilsService])
], VersionUpdaterService);
//# sourceMappingURL=version-updater.service.js.map