From 969d455a3c9b97fb874e4fd11ec30cbc2c354304 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sun, 19 Apr 2020 23:57:28 +0200 Subject: [PATCH] fix(gradle-wrapper): use distribution url instead of version (#6003) --- lib/manager/gradle-wrapper/artifacts.spec.ts | 8 +++++-- lib/manager/gradle-wrapper/artifacts.ts | 23 ++++++++++++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/lib/manager/gradle-wrapper/artifacts.spec.ts b/lib/manager/gradle-wrapper/artifacts.spec.ts index 359bbf60da..1a3b5266d7 100644 --- a/lib/manager/gradle-wrapper/artifacts.spec.ts +++ b/lib/manager/gradle-wrapper/artifacts.spec.ts @@ -86,10 +86,14 @@ describe(getName(__filename), () => { 'gradlew.bat', ].forEach((file) => { expect( - readFileSync(resolve(__dirname, `./__fixtures__/testFiles/${file}`)) + readFileSync( + resolve(__dirname, `./__fixtures__/testFiles/${file}`), + 'utf8' + ) ).toEqual( readFileSync( - resolve(__dirname, `./__fixtures__/expectedFiles/${file}`) + resolve(__dirname, `./__fixtures__/expectedFiles/${file}`), + 'utf8' ) ); }); diff --git a/lib/manager/gradle-wrapper/artifacts.ts b/lib/manager/gradle-wrapper/artifacts.ts index e4e619801f..bb7193aa0b 100644 --- a/lib/manager/gradle-wrapper/artifacts.ts +++ b/lib/manager/gradle-wrapper/artifacts.ts @@ -24,8 +24,21 @@ async function addIfUpdated( return null; } +function getDistributionUrl(newPackageFileContent: string): string { + const distributionUrlLine = newPackageFileContent + .split('\n') + .find((line) => line.startsWith('distributionUrl=')); + if (distributionUrlLine) { + return distributionUrlLine + .replace('distributionUrl=', '') + .replace('https\\:', 'https:'); + } + return null; +} + export async function updateArtifacts({ packageFileName, + newPackageFileContent, updatedDeps, config, }: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> { @@ -34,12 +47,18 @@ export async function updateArtifacts({ logger.debug({ updatedDeps }, 'gradle-wrapper.updateArtifacts()'); const gradlew = gradleWrapperFileName(config); const gradlewPath = resolve(projectDir, `./${gradlew}`); - const cmd = await prepareGradleCommand( + let cmd = await prepareGradleCommand( gradlew, projectDir, await fs.stat(gradlewPath).catch(() => null), - `wrapper --gradle-version ${config.toVersion}` + `wrapper` ); + const distributionUrl = getDistributionUrl(newPackageFileContent); + if (distributionUrl) { + cmd += ` --gradle-distribution-url ${distributionUrl}`; + } else { + cmd += ` --gradle-version ${config.toVersion}`; + } logger.debug(`Updating gradle wrapper: "${cmd}"`); const execOptions: ExecOptions = { docker: { -- GitLab