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 (107 loc) • 4.63 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 {
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,
})}`);
const rootConfigPath = this.utilsService.resolveFilePath(utils_service_1.PACKAGE_JSON);
const projects = this.utilsService.getWorkspaceProjects();
Object.keys(projects)
.filter((key) => !key.includes('-e2e'))
.forEach((projectName) => {
this.logger.debug(`Process project "${projectName}" in ${projects[projectName].root}`);
this.updateFolderPackageFromRootPackage({
rootConfigPath,
appConfigPath: `${projects[projectName].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: rootConfigPath,
appConfigPath: appConfigPath,
})}`);
if (appConfigPath === rootConfigPath) {
throw new Error(`Source and destination is equals: ${appConfigPath}==${rootConfigPath}`);
}
let folderConfig;
let rootConfig;
let content;
try {
content = (0, fs_1.readFileSync)(rootConfigPath).toString();
rootConfig = JSON.parse(content);
}
catch (error) {
throw new Error(`Wrong body of file ${rootConfigPath}`);
}
try {
content = (0, fs_1.readFileSync)(appConfigPath).toString();
folderConfig = JSON.parse(content);
let save = false;
if (updatePackageVersion) {
folderConfig['version'] = rootConfig['version'];
save = true;
}
if (updateDependenciesVersion) {
if (folderConfig['peerDependencies']) {
const peerDependenciesKeys = Object.keys(folderConfig['peerDependencies']);
peerDependenciesKeys.forEach((key) => {
save = true;
if (rootConfig['dependencies'][key]) {
folderConfig['peerDependencies'][key] =
rootConfig['dependencies'][key];
}
});
}
if (folderConfig['dependencies']) {
const dependenciesKeys = Object.keys(folderConfig['dependencies']);
dependenciesKeys.forEach((key) => {
save = true;
if (rootConfig['dependencies'][key]) {
folderConfig['dependencies'][key] =
rootConfig['dependencies'][key];
}
if (rootConfig['devDependencies'][key]) {
folderConfig['dependencies'][key] =
rootConfig['devDependencies'][key];
}
});
}
}
if (save) {
(0, fs_1.writeFileSync)(appConfigPath, JSON.stringify(folderConfig, null, 4));
}
}
catch (error) {
this.logger.info('Error', `Wrong body of file ${appConfigPath}`);
}
this.logger.info(`End of for ${JSON.stringify({
rootConfigPath: rootConfigPath,
appConfigPath: appConfigPath,
})}`);
}
};
VersionUpdaterService.title = 'version-updater';
VersionUpdaterService = tslib_1.__decorate([
(0, common_1.Injectable)(),
tslib_1.__metadata("design:paramtypes", [utils_service_1.UtilsService])
], VersionUpdaterService);
exports.VersionUpdaterService = VersionUpdaterService;