From 98231804c3dc39cfd3745e76a2a5fb8a29b94b33 Mon Sep 17 00:00:00 2001 From: Johannes Feichtner <343448+Churro@users.noreply.github.com> Date: Wed, 8 Mar 2023 07:31:28 +0100 Subject: [PATCH] feat(manager/gradle): add support for map notation deps in Groovy maps (#20798) --- lib/modules/manager/gradle/parser.spec.ts | 6 +++++ .../manager/gradle/parser/assignments.ts | 25 +++++++++++-------- .../manager/gradle/parser/dependencies.ts | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/lib/modules/manager/gradle/parser.spec.ts b/lib/modules/manager/gradle/parser.spec.ts index be59d51b67..3d45f553b8 100644 --- a/lib/modules/manager/gradle/parser.spec.ts +++ b/lib/modules/manager/gradle/parser.spec.ts @@ -157,6 +157,7 @@ describe('modules/manager/gradle/parser', () => { releaseCoroutines: "org.jetbrains.kotlinx:kotlinx-coroutines-core:0.26.1-eap13" api: "org.slf4j:slf4j-api:$slfj4Version", ] + foo = [ group: "org.slf4j", name: "slf4j-ext", version: slfj4Version ] `; const { deps } = parseGradle(input); @@ -176,6 +177,11 @@ describe('modules/manager/gradle/parser', () => { groupName: 'slfj4Version', currentValue: '2.0.0', }, + { + depName: 'org.slf4j:slf4j-ext', + groupName: 'slfj4Version', + currentValue: '2.0.0', + }, ]); }); }); diff --git a/lib/modules/manager/gradle/parser/assignments.ts b/lib/modules/manager/gradle/parser/assignments.ts index 9b5ccbd49b..a058020618 100644 --- a/lib/modules/manager/gradle/parser/assignments.ts +++ b/lib/modules/manager/gradle/parser/assignments.ts @@ -13,6 +13,7 @@ import { storeInTokenMap, storeVarToken, } from './common'; +import { qGroovyMapNotationDependencies } from './dependencies'; import { handleAssignment } from './handlers'; // foo = "1.2.3" @@ -65,16 +66,20 @@ const qKotlinSingleExtraVarAssignment = q }) .handler(cleanupTempVars); -// foo: "1.2.3" -const qGroovySingleMapOfVarAssignment = q - .sym(storeVarToken) - .handler(prependNestingDepth) - .handler(coalesceVariable) - .handler((ctx) => storeInTokenMap(ctx, 'keyToken')) - .op(':') - .join(qTemplateString) - .handler((ctx) => storeInTokenMap(ctx, 'valToken')) - .handler(handleAssignment); +const qGroovySingleMapOfVarAssignment = q.alt( + // foo: [group: "foo", name: "bar", version: "1.2.3"] + q.begin<Ctx>().join(qGroovyMapNotationDependencies).end(), + // foo: "1.2.3" + q + .sym(storeVarToken) + .handler(prependNestingDepth) + .handler(coalesceVariable) + .handler((ctx) => storeInTokenMap(ctx, 'keyToken')) + .op(':') + .join(qTemplateString) + .handler((ctx) => storeInTokenMap(ctx, 'valToken')) + .handler(handleAssignment) +); const qGroovyMapOfExpr = ( search: q.QueryBuilder<Ctx, parser.Node> diff --git a/lib/modules/manager/gradle/parser/dependencies.ts b/lib/modules/manager/gradle/parser/dependencies.ts index 6336337902..0ec2b03129 100644 --- a/lib/modules/manager/gradle/parser/dependencies.ts +++ b/lib/modules/manager/gradle/parser/dependencies.ts @@ -79,7 +79,7 @@ const qDependencySet = q .handler(cleanupTempVars); // group: "foo", name: "bar", version: "1.2.3" -const qGroovyMapNotationDependencies = q +export const qGroovyMapNotationDependencies = q .sym<Ctx>('group') .op(':') .join(qGroupId) -- GitLab