From b8e9a1367f2b607127cad985b8c1ab1ce9b474b0 Mon Sep 17 00:00:00 2001 From: Sergei Zharinov <zharinov@users.noreply.github.com> Date: Wed, 13 Jan 2021 14:41:49 +0400 Subject: [PATCH] fix(gradle-lite): Parse default registry urls configured explicitly (#8267) --- lib/manager/gradle-lite/common.ts | 5 ++++ lib/manager/gradle-lite/parser.spec.ts | 12 +++++++-- lib/manager/gradle-lite/parser.ts | 35 +++++++++++++++++++++++--- 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/lib/manager/gradle-lite/common.ts b/lib/manager/gradle-lite/common.ts index 4c47de178a..354f64c0d5 100644 --- a/lib/manager/gradle-lite/common.ts +++ b/lib/manager/gradle-lite/common.ts @@ -1,5 +1,10 @@ import { PackageDependency } from '../common'; +export { MAVEN_REPO } from '../../datasource/maven/common'; + +export const JCENTER_REPO = 'https://jcenter.bintray.com/'; +export const GOOGLE_REPO = 'https://dl.google.com/android/maven2/'; + export interface ManagerData { fileReplacePosition: number; packageFile?: string; diff --git a/lib/manager/gradle-lite/parser.spec.ts b/lib/manager/gradle-lite/parser.spec.ts index be5c69c1b1..437a77ceef 100644 --- a/lib/manager/gradle-lite/parser.spec.ts +++ b/lib/manager/gradle-lite/parser.spec.ts @@ -1,5 +1,6 @@ import { readFileSync } from 'fs'; import path from 'path'; +import { GOOGLE_REPO, JCENTER_REPO, MAVEN_REPO } from './common'; import { parseGradle, parseProps } from './parser'; function getGradleFile(fileName: string): string { @@ -45,8 +46,15 @@ describe('manager/gradle-lite/parser', () => { ({ urls } = parseGradle('uri "https://example.com"')); expect(urls).toStrictEqual(['https://example.com']); - ({ urls } = parseGradle('uri("https://example.com")')); - expect(urls).toStrictEqual(['https://example.com']); + ({ urls } = parseGradle( + 'mavenCentral(); uri("https://example.com"); jcenter(); google();' + )); + expect(urls).toStrictEqual([ + MAVEN_REPO, + 'https://example.com', + JCENTER_REPO, + GOOGLE_REPO, + ]); }); it('parses long form deps', () => { let deps; diff --git a/lib/manager/gradle-lite/parser.ts b/lib/manager/gradle-lite/parser.ts index c14f8137c3..e570e523b5 100644 --- a/lib/manager/gradle-lite/parser.ts +++ b/lib/manager/gradle-lite/parser.ts @@ -4,6 +4,9 @@ import { logger } from '../../logger'; import { regEx } from '../../util/regex'; import { PackageDependency } from '../common'; import { + GOOGLE_REPO, + JCENTER_REPO, + MAVEN_REPO, ManagerData, PackageVariables, StringInterpolation, @@ -188,7 +191,7 @@ function processPlugin({ return { deps: [dep] }; } -function processRegistryUrl({ +function processCustomRegistryUrl({ tokenMap, }: SyntaxHandlerInput): SyntaxHandlerOutput { const registryUrl = tokenMap.registryUrl?.value; @@ -205,6 +208,18 @@ function processRegistryUrl({ return null; } +function processPredefinedRegistryUrl({ + tokenMap, +}: SyntaxHandlerInput): SyntaxHandlerOutput { + const registryName = tokenMap.registryName?.value; + const registryUrl = { + mavenCentral: MAVEN_REPO, + jcenter: JCENTER_REPO, + google: GOOGLE_REPO, + }[registryName]; + return { urls: [registryUrl] }; +} + function processLongFormDep({ tokenMap, variables, @@ -296,6 +311,20 @@ const matcherConfigs: SyntaxMatchConfig[] = [ ], handler: processPlugin, }, + { + // mavenCentral() + matchers: [ + { + matchType: TokenType.Word, + matchValue: ['mavenCentral', 'jcenter', 'google'], + tokenMapKey: 'registryName', + }, + { matchType: TokenType.LeftParen }, + { matchType: TokenType.RightParen }, + endOfInstruction, + ], + handler: processPredefinedRegistryUrl, + }, { // url 'https://repo.spring.io/snapshot/' matchers: [ @@ -303,7 +332,7 @@ const matcherConfigs: SyntaxMatchConfig[] = [ { matchType: TokenType.String, tokenMapKey: 'registryUrl' }, endOfInstruction, ], - handler: processRegistryUrl, + handler: processCustomRegistryUrl, }, { // url('https://repo.spring.io/snapshot/') @@ -314,7 +343,7 @@ const matcherConfigs: SyntaxMatchConfig[] = [ { matchType: TokenType.RightParen }, endOfInstruction, ], - handler: processRegistryUrl, + handler: processCustomRegistryUrl, }, { // group: "com.example", name: "my.dependency", version: "1.2.3" -- GitLab