From bc0bc71d8386a1e5f47dc4d56daf2abae6f6b654 Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Sat, 16 Jan 2021 10:26:30 +0400
Subject: [PATCH] feat(gradle-lite): Support method-based variable assignment
 via "set()" (#8315)

---
 lib/manager/gradle-lite/parser.spec.ts | 18 +++++++++++++++++-
 lib/manager/gradle-lite/parser.ts      | 13 +++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/lib/manager/gradle-lite/parser.spec.ts b/lib/manager/gradle-lite/parser.spec.ts
index 437a77ceef..072126bdc0 100644
--- a/lib/manager/gradle-lite/parser.spec.ts
+++ b/lib/manager/gradle-lite/parser.spec.ts
@@ -16,7 +16,23 @@ describe('manager/gradle-lite/parser', () => {
     let deps;
 
     ({ deps } = parseGradle(
-      '\nversion = "1.2.3"\n"foo:bar:$version"\nversion = "3.2.1"'
+      ['version = "1.2.3"', '"foo:bar:$version"', 'version = "3.2.1"'].join(
+        '\n'
+      )
+    ));
+    expect(deps).toMatchObject([
+      {
+        depName: 'foo:bar',
+        currentValue: '1.2.3',
+      },
+    ]);
+
+    ({ deps } = parseGradle(
+      [
+        'set("version", "1.2.3")',
+        '"foo:bar:$version"',
+        'set("version", "3.2.1")',
+      ].join('\n')
     ));
     expect(deps).toMatchObject([
       {
diff --git a/lib/manager/gradle-lite/parser.ts b/lib/manager/gradle-lite/parser.ts
index e570e523b5..4e3ab1f64b 100644
--- a/lib/manager/gradle-lite/parser.ts
+++ b/lib/manager/gradle-lite/parser.ts
@@ -259,6 +259,19 @@ const matcherConfigs: SyntaxMatchConfig[] = [
     ],
     handler: handleAssignment,
   },
+  {
+    // set('foo', 'bar')
+    matchers: [
+      { matchType: TokenType.Word, matchValue: 'set' },
+      { matchType: TokenType.LeftParen },
+      { matchType: TokenType.String, tokenMapKey: 'keyToken' },
+      { matchType: TokenType.Comma },
+      { matchType: TokenType.String, tokenMapKey: 'valToken' },
+      { matchType: TokenType.RightParen },
+      endOfInstruction,
+    ],
+    handler: handleAssignment,
+  },
   {
     // 'foo.bar:baz:1.2.3'
     matchers: [
-- 
GitLab