From 8142b1d4e882e68f24c6218ffd8f3e701f519608 Mon Sep 17 00:00:00 2001 From: Pavel Busko Date: Mon, 14 Oct 2024 14:56:28 +0200 Subject: [PATCH] Invert detection logic --- lib/modules/manager/buildpacks/extract.ts | 28 ++++------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/lib/modules/manager/buildpacks/extract.ts b/lib/modules/manager/buildpacks/extract.ts index 608e40a655348b..2f6b4a71462f50 100644 --- a/lib/modules/manager/buildpacks/extract.ts +++ b/lib/modules/manager/buildpacks/extract.ts @@ -11,33 +11,15 @@ import type { import { type ProjectDescriptor, ProjectDescriptorToml } from './schema'; const dockerPrefix = regEx(/^docker:\/?\//); -const buildpackRegistryRef = regEx( - /^[a-z0-9\-.]+\/[a-z0-9\-.]+(?:@(?.+))?$/, +const dockerRef = regEx( + /^((?:(?:\w|\w[\w-]*\w)(?:(?:\.(?:\w|\w[\w-]*\w))+)?(?::[\d]+)?\/)?[a-z\d]+(?:(?:(?:[._]|__|[-]*)[a-z\d]+)+)?(?:(?:\/[a-z\d]+(?:(?:(?:[._]|__|[-]*)[a-z\d]+)+)?)+)?)(?::([\w][\w.-]{0,127})(?:@(sha256:[A-Fa-f\d]{32,}))?|@(sha256:[A-Fa-f\d]{32,}))$/, ); -function isBuildpackRegistryRef(ref: string): boolean { - const bpRegistryMatch = buildpackRegistryRef.exec(ref); - if (!bpRegistryMatch) { - return false; - } else if (!bpRegistryMatch.groups?.version) { - return true; - } - - return isVersion(bpRegistryMatch.groups.version); -} - function isDockerRef(ref: string): boolean { - const schemaMatch = regEx(/^([a-z0-9]+):\/?\//).test(ref); - if ( - ref.startsWith('urn:cnb') || // buildpacks registry or builder urns - ref.startsWith('from=') || // builder reference - isBuildpackRegistryRef(ref) || // buildpack registry ID reference - (schemaMatch && !ref.startsWith('docker:/')) // unsupported schema - ) { - return false; + if (ref.startsWith('docker:/') || dockerRef.test(ref)) { + return true; } - - return true; + return false; } function parseProjectToml(