From 1bd51a3740b3240eb15da42c7a946117d1566156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20L=C3=A9vesque?= <etienne.levesque16@gmail.com> Date: Mon, 18 Jan 2021 03:14:45 -0500 Subject: [PATCH] fix(hex): Preserve minor versions when in bump mode (#8326) * feat(hex): Preserve minor versions when in bump mode * Fix linting issue * Add minor test Co-authored-by: Rhys Arkins <rhys@arkins.net> --- lib/versioning/hex/index.spec.ts | 10 +++++++++- lib/versioning/hex/index.ts | 12 +++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/versioning/hex/index.spec.ts b/lib/versioning/hex/index.spec.ts index 03b77d3c66..b657986725 100644 --- a/lib/versioning/hex/index.spec.ts +++ b/lib/versioning/hex/index.spec.ts @@ -128,7 +128,15 @@ describe('lib/versioning/hex', () => { fromVersion: '1.2.3', toVersion: '2.0.7', }) - ).toEqual('~> 2'); + ).toEqual('~> 2.0'); + expect( + hexScheme.getNewValue({ + currentValue: '~> 1.2', + rangeStrategy: 'bump', + fromVersion: '1.2.3', + toVersion: '1.3.1', + }) + ).toEqual('~> 1.3'); expect( hexScheme.getNewValue({ currentValue: '~> 1.2.0', diff --git a/lib/versioning/hex/index.ts b/lib/versioning/hex/index.ts index c1a6d61263..b5219e6318 100644 --- a/lib/versioning/hex/index.ts +++ b/lib/versioning/hex/index.ts @@ -69,10 +69,16 @@ const getNewValue = ({ toVersion, }); newSemver = npm2hex(newSemver); - if (/~>\s*(\d+\.\d+)$/.test(currentValue)) { + if (/~>\s*(\d+\.\d+\.\d+)$/.test(currentValue)) { newSemver = newSemver.replace( - /\^\s*(\d+\.\d+(\.\d)?)/, - (_str, p1: string) => `~> ${p1.slice(0, -2)}` + /[\^~]\s*(\d+\.\d+\.\d+)/, + (_str, p1: string) => `~> ${p1}` + ); + } else if (/~>\s*(\d+\.\d+)$/.test(currentValue)) { + newSemver = newSemver.replace( + /\^\s*(\d+\.\d+)/, + (_str, p1: string) => + `~> ${rangeStrategy !== 'bump' ? p1.slice(0, -2) : p1}` ); } else { newSemver = newSemver.replace(/~\s*(\d+\.\d+\.\d)/, '~> $1'); -- GitLab