From 8d9e3be6f3b73f856a87eee31d4aff8c196ced23 Mon Sep 17 00:00:00 2001
From: Johannes Feichtner <Churro@users.noreply.github.com>
Date: Mon, 13 Jun 2022 07:12:02 +0200
Subject: [PATCH] feat(gradle): add support for library(...).version() (#15929)

---
 lib/modules/manager/gradle/parser.spec.ts |  1 +
 lib/modules/manager/gradle/parser.ts      | 15 +++++++++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/lib/modules/manager/gradle/parser.spec.ts b/lib/modules/manager/gradle/parser.spec.ts
index 4d1ae35d48..156b5f8de9 100644
--- a/lib/modules/manager/gradle/parser.spec.ts
+++ b/lib/modules/manager/gradle/parser.spec.ts
@@ -73,6 +73,7 @@ describe('modules/manager/gradle/parser', () => {
         ${'baz = "1.2.3"'}                    | ${'foobar = "foo:bar:$baz"'}                            | ${{ depName: 'foo:bar', currentValue: '1.2.3', groupName: 'baz' }}
         ${'baz = "1.2.3"'}                    | ${'group: "foo", name: "bar", version: baz'}            | ${{ depName: 'foo:bar', currentValue: '1.2.3', groupName: 'baz' }}
         ${'baz = "1.2.3"'}                    | ${'library("foo.bar", "foo", "bar").versionRef("baz")'} | ${{ depName: 'foo:bar', currentValue: '1.2.3', groupName: 'baz' }}
+        ${''}                                 | ${'library("foo.bar", "foo", "bar").version("1.2.3")'}  | ${{ depName: 'foo:bar', currentValue: '1.2.3' }}
         ${'library("foo.bar", "foo", "bar")'} | ${'"${foo.bar}:1.2.3"'}                                 | ${{ depName: 'foo:bar', currentValue: '1.2.3' }}
       `('$def | $str', ({ def, str, output }) => {
         const input = [def, str].join('\n');
diff --git a/lib/modules/manager/gradle/parser.ts b/lib/modules/manager/gradle/parser.ts
index 3c266264f9..dd4203223a 100644
--- a/lib/modules/manager/gradle/parser.ts
+++ b/lib/modules/manager/gradle/parser.ts
@@ -373,9 +373,11 @@ function processLibraryDep(input: SyntaxHandlerInput): SyntaxHandlerOutput {
 
   if (groupId && artifactId) {
     res.vars = { [key]: { key, value, fileReplacePosition, packageFile } };
-    const versionRefToken = tokenMap.version;
-    if (versionRefToken) {
-      const version: Token = { ...versionRefToken, type: TokenType.Word };
+    const version = tokenMap.version;
+    if (version) {
+      if (tokenMap.versionType?.value === 'versionRef') {
+        version.type = TokenType.Word;
+      }
       const depRes = processLongFormDep({
         ...input,
         tokenMap: { ...input.tokenMap, version },
@@ -653,6 +655,7 @@ const matcherConfigs: SyntaxMatchConfig[] = [
   },
   {
     // library("foobar", "foo", "bar").versionRef("foo.bar")
+    // library("foobar", "foo", "bar").version("1.2.3")
     matchers: [
       { matchType: TokenType.Word, matchValue: 'library' },
       { matchType: TokenType.LeftParen },
@@ -663,7 +666,11 @@ const matcherConfigs: SyntaxMatchConfig[] = [
       { matchType: potentialStringTypes, tokenMapKey: 'artifactId' },
       { matchType: TokenType.RightParen },
       { matchType: TokenType.Dot },
-      { matchType: TokenType.Word, matchValue: 'versionRef' },
+      {
+        matchType: TokenType.Word,
+        matchValue: ['versionRef', 'version'],
+        tokenMapKey: 'versionType',
+      },
       { matchType: TokenType.LeftParen },
       { matchType: TokenType.String, tokenMapKey: 'version' },
       { matchType: TokenType.RightParen },
-- 
GitLab