From 4537ec1cf0ef47da14f85d39f4081da69eabd2d7 Mon Sep 17 00:00:00 2001 From: Joshua Gleitze <dev@joshuagleitze.de> Date: Wed, 18 Mar 2020 10:57:15 +0200 Subject: [PATCH] =?UTF-8?q?refactor(gradle-wrapper):=20Extract=20Regexes?= =?UTF-8?q?=20&=20Named=20Capturing=20Gro=E2=80=A6=20(#5742)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/manager/gradle-wrapper/extract.ts | 18 +++++++++--------- lib/manager/gradle-wrapper/search.ts | 2 ++ lib/manager/gradle-wrapper/update.ts | 5 +++-- 3 files changed, 14 insertions(+), 11 deletions(-) create mode 100644 lib/manager/gradle-wrapper/search.ts diff --git a/lib/manager/gradle-wrapper/extract.ts b/lib/manager/gradle-wrapper/extract.ts index 8bf89004a1..334bbeb599 100644 --- a/lib/manager/gradle-wrapper/extract.ts +++ b/lib/manager/gradle-wrapper/extract.ts @@ -3,6 +3,7 @@ import { logger } from '../../logger'; import { PackageFile, PackageDependency } from '../common'; import * as semverVersioning from '../../versioning/semver'; import * as datasourceGradleVersion from '../../datasource/gradle-version'; +import { DISTRIBUTION_CHECKSUM_REGEX, DISTRIBUTION_URL_REGEX } from './search'; export function extractPackageFile(fileContent: string): PackageFile | null { logger.debug('gradle-wrapper.extractPackageFile()'); @@ -10,24 +11,23 @@ export function extractPackageFile(fileContent: string): PackageFile | null { let lineNumber = 0; for (const line of lines) { - const match = /^distributionUrl\s*=\s*\S*-((\d|\.)+)-(bin|all)\.zip\s*$/.exec( - line - ); - if (match) { + const distributionUrlMatch = DISTRIBUTION_URL_REGEX.exec(line); + if (distributionUrlMatch) { const dependency: PackageDependency = { datasource: datasourceGradleVersion.id, depType: 'gradle-wrapper', depName: 'gradle', - currentValue: coerce(match[1]).toString(), - managerData: { lineNumber, gradleWrapperType: match[3] }, + currentValue: coerce(distributionUrlMatch.groups.version).toString(), + managerData: { + lineNumber, + gradleWrapperType: distributionUrlMatch.groups.type, + }, versioning: semverVersioning.id, }; let shaLineNumber = 0; for (const shaLine of lines) { - const shaMatch = /^distributionSha256Sum\s*=\s*((\w){64}).*$/.test( - shaLine - ); + const shaMatch = DISTRIBUTION_CHECKSUM_REGEX.test(shaLine); if (shaMatch) { dependency.managerData.checksumLineNumber = shaLineNumber; break; diff --git a/lib/manager/gradle-wrapper/search.ts b/lib/manager/gradle-wrapper/search.ts new file mode 100644 index 0000000000..d046f3e2d1 --- /dev/null +++ b/lib/manager/gradle-wrapper/search.ts @@ -0,0 +1,2 @@ +export const DISTRIBUTION_URL_REGEX = /^(?<assignment>distributionUrl\s*=\s*)\S*-(?<version>(\d|\.)+)-(?<type>bin|all)\.zip\s*$/; +export const DISTRIBUTION_CHECKSUM_REGEX = /^(?<assignment>distributionSha256Sum\s*=\s*)(?<checksum>(\w){64}).*$/; diff --git a/lib/manager/gradle-wrapper/update.ts b/lib/manager/gradle-wrapper/update.ts index fd9685a3fd..4911d45d37 100644 --- a/lib/manager/gradle-wrapper/update.ts +++ b/lib/manager/gradle-wrapper/update.ts @@ -1,6 +1,7 @@ import got from '../../util/got'; import { logger } from '../../logger'; import { UpdateDependencyConfig } from '../common'; +import { DISTRIBUTION_CHECKSUM_REGEX, DISTRIBUTION_URL_REGEX } from './search'; function replaceType(url: string): string { return url.replace('bin', 'all'); @@ -40,12 +41,12 @@ export async function updateDependency({ lines[upgrade.managerData.lineNumber] = lines[ upgrade.managerData.lineNumber - ].replace(/(distributionUrl\s*=\s*)\S*/, `$1${downloadUrl}`); + ].replace(DISTRIBUTION_URL_REGEX, `$<assignment>${downloadUrl}`); if (upgrade.managerData.checksumLineNumber) { lines[upgrade.managerData.checksumLineNumber] = lines[ upgrade.managerData.checksumLineNumber - ].replace(/(distributionSha256Sum\s*=\s*)\S*/, `$1${checksum}`); + ].replace(DISTRIBUTION_CHECKSUM_REGEX, `$<assignment>${checksum}`); } // TODO: insert if not present -- GitLab