From 40bd20cfab256a220c9c76a48288a67b35ff9dcf Mon Sep 17 00:00:00 2001 From: Sergei Zharinov <zharinov@users.noreply.github.com> Date: Sat, 5 Feb 2022 08:03:07 +0300 Subject: [PATCH] refactor(versioning/docker): Enable strict null checks (#14004) --- lib/versioning/docker/index.ts | 24 +++++++++++++++--------- tsconfig.strict.json | 1 - 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/lib/versioning/docker/index.ts b/lib/versioning/docker/index.ts index 4dc32bc918..e9c5464d19 100644 --- a/lib/versioning/docker/index.ts +++ b/lib/versioning/docker/index.ts @@ -22,16 +22,15 @@ class DockerVersioningApi extends GenericVersioningApi { return null; } const versionPieces = version.replace(regEx(/^v/), '').split('-'); - const prefix = versionPieces.shift(); - const suffix = versionPieces.join('-'); - const m = versionPattern.exec(prefix); - if (!m?.groups) { + const [prefix, ...suffixPieces] = versionPieces; + const matchGroups = prefix?.match(versionPattern)?.groups; + if (!matchGroups) { return null; } - const { version: ver, prerelease } = m.groups; + const { version: ver, prerelease } = matchGroups; const release = ver.split('.').map(Number); - return { release, suffix, prerelease }; + return { release, suffix: suffixPieces.join('-'), prerelease }; } protected override _compare(version: string, other: string): number { @@ -65,16 +64,23 @@ class DockerVersioningApi extends GenericVersioningApi { return -1; } // alphabetic order - return parsed1.prerelease.localeCompare(parsed2.prerelease); + if (parsed1.prerelease && parsed2.prerelease) { + return parsed1.prerelease.localeCompare(parsed2.prerelease); + } } + // equals - return parsed2.suffix.localeCompare(parsed1.suffix); + const suffix1 = parsed1.suffix ?? ''; + const suffix2 = parsed2.suffix ?? ''; + return suffix2.localeCompare(suffix1); } override isCompatible(version: string, current: string): boolean { const parsed1 = this._parse(version); const parsed2 = this._parse(current); - return ( + return !!( + parsed1 && + parsed2 && parsed1.suffix === parsed2.suffix && parsed1.release.length === parsed2.release.length ); diff --git a/tsconfig.strict.json b/tsconfig.strict.json index a6360199ca..8efc64c764 100644 --- a/tsconfig.strict.json +++ b/tsconfig.strict.json @@ -391,7 +391,6 @@ "lib/versioning/aws-machine-image/index.ts", "lib/versioning/common.ts", "lib/versioning/composer/index.ts", - "lib/versioning/docker/index.ts", "lib/versioning/generic.ts", "lib/versioning/git/index.ts", "lib/versioning/hashicorp/index.ts", -- GitLab