diff --git a/lib/manager/gradle-wrapper/extract.ts b/lib/manager/gradle-wrapper/extract.ts index 8bf89004a198e3023dba2b9e577e146db91339c7..334bbeb599a0ee6250df86d9a6c240eb78b5b0dc 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 0000000000000000000000000000000000000000..d046f3e2d1ab88b399b5793d03b10fd9f3716e6a --- /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 fd9685a3fdd098fc996d12422f570329f8079c1a..4911d45d3779b41ea0ed8fdd95e0ceb0785497ca 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