From beb4435ee036b75135b7371727f38f8b754ca8b3 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 12 Sep 2022 15:07:32 +0300 Subject: [PATCH] diff closest --- Gruntfile.js | 2 +- diff.js | 30 +++++++++++++++++++++++------- js/diff.js | 20 ++++++++++++++------ 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index fcc198f259..1810672c0c 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -381,7 +381,7 @@ module.exports = grunt => { }); grunt.registerTask('upgrade', () => { - cp.execSync("node diff --all --vendor", {stdio: 'inherit'}); + cp.execSync("node diff --closest", {stdio: 'inherit'}); }); grunt.registerTask('unit-tests-run', () => { diff --git a/diff.js b/diff.js index 1b5a79e06b..9081e8c8dd 100644 --- a/diff.js +++ b/diff.js @@ -47,6 +47,7 @@ let isDev = false; let isAll = false; let withVendor = true; let forceScripts = false; +let isClosest = false; if (process.argv.length > 1) { for (let i in process.argv) { @@ -67,6 +68,10 @@ if (process.argv.length > 1) { forceScripts = true; } + if (process.argv[i] === '--closest') { + isClosest = true; + } + if (~process.argv[i].indexOf('--acceptedVersion=')) { acceptedVersionName = process.argv[i].substr(('--acceptedVersion=').length); } @@ -75,22 +80,33 @@ if (process.argv.length > 1) { let espoPath = path.dirname(fs.realpathSync(__filename)); +if (isAll || isClosest) { + acceptedVersionName = null; +} + let diff = new Diff(espoPath, { - isAll: isAll, isDev: isDev, withVendor: withVendor, forceScripts: forceScripts, - acceptedVersionName: !isAll ? acceptedVersionName : null, + acceptedVersionName: acceptedVersionName, }); -if (isAll) { - diff.buildAllUpgradePackages(); -} +(() => { + if (isAll) { + diff.buildAllUpgradePackages(); + + return; + } + + if (isClosest) { + diff.buildClosestUpgradePackages(); + + return; + } -if (!isAll) { if (!versionFrom) { throw new Error("No 'version' specified."); } diff.buildUpgradePackage(versionFrom); -} +})(); diff --git a/js/diff.js b/js/diff.js index 7c1b46b3d6..6e5a469b8c 100644 --- a/js/diff.js +++ b/js/diff.js @@ -27,14 +27,12 @@ ************************************************************************/ const fs = require('fs'); -const sys = require('util'); const cp = require('child_process'); const archiver = require('archiver'); const process = require('process'); const buildUtils = require('./build-utils'); const exec = cp.exec; -const execSync = cp.execSync; /** * Builds upgrade packages. @@ -59,13 +57,19 @@ class Diff return tagList; } + buildClosestUpgradePackages() { + let versionFromList = this._getPreviousVersionList(true); + + this.buildMultipleUpgradePackages(versionFromList); + } + buildAllUpgradePackages() { let versionFromList = this._getPreviousVersionList(); this.buildMultipleUpgradePackages(versionFromList); } - _getPreviousVersionList() { + _getPreviousVersionList(closest) { let dirInitial = process.cwd(); let version = (require(this.espoPath + '/package.json') || {}).version; @@ -105,6 +109,12 @@ class Diff for (let i = 0; i < tagList.length; i++) { let tag = tagList[i]; + let patchVersionNumberI = tag.split('.')[2]; + + if (closest && parseInt(patchVersionNumberI) !== parseInt(hotfixVersionNumber) - 1) { + break; + } + if (tag === version) { continue; } @@ -112,8 +122,6 @@ class Diff if (!~tag.indexOf('beta') && !~tag.indexOf('alpha')) { versionFromList.push(tag); - let patchVersionNumberI = tag.split('.')[2]; - if (patchVersionNumberI === '0') { break; } @@ -156,7 +164,7 @@ class Diff return new Promise(resolve => { let acceptedVersionName = params.acceptedVersionName || versionFrom; let isDev = params.isDev; - let withVendor = params.withVendor; + let withVendor = params.withVendor ?? true; let forceScripts = params.forceScripts; let version = (require(espoPath + '/package.json') || {}).version;