From 71679f487fe6f9094d620aa0205eea1ff14b012e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Javier=20Segovia=20C=C3=B3rdoba?=
 <7463564+JavierSegoviaCordoba@users.noreply.github.com>
Date: Sun, 3 Oct 2021 07:04:37 +0200
Subject: [PATCH] fix(gradle): support gradlePluginPortal() (#11894)

---
 .../deep/__fixtures__/build.gradle.example1   |  2 ++
 .../shallow/__snapshots__/parser.spec.ts.snap | 28 ++++++++++++-------
 lib/manager/gradle/shallow/common.ts          |  1 +
 lib/manager/gradle/shallow/parser.spec.ts     | 10 +++++--
 lib/manager/gradle/shallow/parser.ts          | 11 ++++++--
 5 files changed, 38 insertions(+), 14 deletions(-)

diff --git a/lib/manager/gradle/deep/__fixtures__/build.gradle.example1 b/lib/manager/gradle/deep/__fixtures__/build.gradle.example1
index 5ba8e6206b..90707ae544 100644
--- a/lib/manager/gradle/deep/__fixtures__/build.gradle.example1
+++ b/lib/manager/gradle/deep/__fixtures__/build.gradle.example1
@@ -8,6 +8,7 @@ buildscript {
         }
         mavenCentral()
         jcenter()
+        gradlePluginPortal()
     }
     dependencies {
         classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
@@ -15,6 +16,7 @@ buildscript {
         classpath 'com.fkorotkov:gradle-libraries-plugin:0.1'
         classpath "gradle.plugin.se.patrikerdes:gradle-use-latest-versions-plugin:0.2.3"
         classpath 'org.apache.openjpa:openjpa:3.1.1'
+        classpath 'com.gradle.publish:plugin-publish-plugin:0.13.0'
     }
 }
 
diff --git a/lib/manager/gradle/shallow/__snapshots__/parser.spec.ts.snap b/lib/manager/gradle/shallow/__snapshots__/parser.spec.ts.snap
index 246aa7d24c..4eabcf1f14 100644
--- a/lib/manager/gradle/shallow/__snapshots__/parser.spec.ts.snap
+++ b/lib/manager/gradle/shallow/__snapshots__/parser.spec.ts.snap
@@ -15,7 +15,7 @@ Array [
     "currentValue": "1.2.3",
     "depName": "com.github.jengelman.gradle.plugins:shadow",
     "managerData": Object {
-      "fileReplacePosition": 388,
+      "fileReplacePosition": 417,
       "packageFile": "build.gradle",
     },
   },
@@ -23,7 +23,7 @@ Array [
     "currentValue": "0.1",
     "depName": "com.fkorotkov:gradle-libraries-plugin",
     "managerData": Object {
-      "fileReplacePosition": 452,
+      "fileReplacePosition": 481,
       "packageFile": "build.gradle",
     },
   },
@@ -31,7 +31,7 @@ Array [
     "currentValue": "0.2.3",
     "depName": "gradle.plugin.se.patrikerdes:gradle-use-latest-versions-plugin",
     "managerData": Object {
-      "fileReplacePosition": 539,
+      "fileReplacePosition": 568,
       "packageFile": "build.gradle",
     },
   },
@@ -39,7 +39,15 @@ Array [
     "currentValue": "3.1.1",
     "depName": "org.apache.openjpa:openjpa",
     "managerData": Object {
-      "fileReplacePosition": 592,
+      "fileReplacePosition": 621,
+      "packageFile": "build.gradle",
+    },
+  },
+  Object {
+    "currentValue": "0.13.0",
+    "depName": "com.gradle.publish:plugin-publish-plugin",
+    "managerData": Object {
+      "fileReplacePosition": 688,
       "packageFile": "build.gradle",
     },
   },
@@ -47,7 +55,7 @@ Array [
     "currentValue": "6.0.9.RELEASE",
     "depName": "org.grails:gorm-hibernate5-spring-boot",
     "managerData": Object {
-      "fileReplacePosition": 1785,
+      "fileReplacePosition": 1882,
       "packageFile": "build.gradle",
     },
   },
@@ -55,7 +63,7 @@ Array [
     "currentValue": "6.0.5",
     "depName": "mysql:mysql-connector-java",
     "managerData": Object {
-      "fileReplacePosition": 1841,
+      "fileReplacePosition": 1938,
       "packageFile": "build.gradle",
     },
   },
@@ -63,7 +71,7 @@ Array [
     "currentValue": "1.0-groovy-2.4",
     "depName": "org.spockframework:spock-spring",
     "managerData": Object {
-      "fileReplacePosition": 1899,
+      "fileReplacePosition": 1996,
       "packageFile": "build.gradle",
     },
   },
@@ -71,7 +79,7 @@ Array [
     "currentValue": "1.3",
     "depName": "org.hamcrest:hamcrest-core",
     "managerData": Object {
-      "fileReplacePosition": 2004,
+      "fileReplacePosition": 2101,
       "packageFile": "build.gradle",
     },
   },
@@ -79,7 +87,7 @@ Array [
     "currentValue": "3.1",
     "depName": "cglib:cglib-nodep",
     "managerData": Object {
-      "fileReplacePosition": 2092,
+      "fileReplacePosition": 2189,
       "packageFile": "build.gradle",
     },
   },
@@ -87,7 +95,7 @@ Array [
     "currentValue": "3.1.1",
     "depName": "org.apache.openjpa:openjpa",
     "managerData": Object {
-      "fileReplacePosition": 2198,
+      "fileReplacePosition": 2295,
       "packageFile": "build.gradle",
     },
   },
diff --git a/lib/manager/gradle/shallow/common.ts b/lib/manager/gradle/shallow/common.ts
index b2d6026fcd..d11fc1954e 100644
--- a/lib/manager/gradle/shallow/common.ts
+++ b/lib/manager/gradle/shallow/common.ts
@@ -2,6 +2,7 @@ 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 const GRADLE_PLUGIN_PORTAL_REPO = 'https://plugins.gradle.org/m2/';
 
 // TODO: convert to types
 export enum TokenType {
diff --git a/lib/manager/gradle/shallow/parser.spec.ts b/lib/manager/gradle/shallow/parser.spec.ts
index 869c092aae..c3c439f0af 100644
--- a/lib/manager/gradle/shallow/parser.spec.ts
+++ b/lib/manager/gradle/shallow/parser.spec.ts
@@ -1,5 +1,10 @@
 import { loadFixture } from '../../../../test/util';
-import { GOOGLE_REPO, JCENTER_REPO, MAVEN_REPO } from './common';
+import {
+  GOOGLE_REPO,
+  GRADLE_PLUGIN_PORTAL_REPO,
+  JCENTER_REPO,
+  MAVEN_REPO,
+} from './common';
 import { parseGradle, parseProps } from './parser';
 
 describe('manager/gradle/shallow/parser', () => {
@@ -60,13 +65,14 @@ describe('manager/gradle/shallow/parser', () => {
     expect(urls).toStrictEqual(['https://example.com']);
 
     ({ urls } = parseGradle(
-      'mavenCentral(); uri("https://example.com"); jcenter(); google();'
+      'mavenCentral(); uri("https://example.com"); jcenter(); google(); gradlePluginPortal();'
     ));
     expect(urls).toStrictEqual([
       MAVEN_REPO,
       'https://example.com',
       JCENTER_REPO,
       GOOGLE_REPO,
+      GRADLE_PLUGIN_PORTAL_REPO,
     ]);
 
     ({ urls } = parseGradle(
diff --git a/lib/manager/gradle/shallow/parser.ts b/lib/manager/gradle/shallow/parser.ts
index b1d16f5b80..f684215c8e 100644
--- a/lib/manager/gradle/shallow/parser.ts
+++ b/lib/manager/gradle/shallow/parser.ts
@@ -4,7 +4,13 @@ import { logger } from '../../../logger';
 import { regEx } from '../../../util/regex';
 import type { PackageDependency } from '../../types';
 import type { GradleManagerData } from '../types';
-import { GOOGLE_REPO, JCENTER_REPO, MAVEN_REPO, TokenType } from './common';
+import {
+  GOOGLE_REPO,
+  GRADLE_PLUGIN_PORTAL_REPO,
+  JCENTER_REPO,
+  MAVEN_REPO,
+  TokenType,
+} from './common';
 import { tokenize } from './tokenizer';
 import type {
   MatchConfig,
@@ -215,6 +221,7 @@ function processPredefinedRegistryUrl({
     mavenCentral: MAVEN_REPO,
     jcenter: JCENTER_REPO,
     google: GOOGLE_REPO,
+    gradlePluginPortal: GRADLE_PLUGIN_PORTAL_REPO,
   }[registryName];
   return { urls: [registryUrl] };
 }
@@ -330,7 +337,7 @@ const matcherConfigs: SyntaxMatchConfig[] = [
     matchers: [
       {
         matchType: TokenType.Word,
-        matchValue: ['mavenCentral', 'jcenter', 'google'],
+        matchValue: ['mavenCentral', 'jcenter', 'google', 'gradlePluginPortal'],
         tokenMapKey: 'registryName',
       },
       { matchType: TokenType.LeftParen },
-- 
GitLab