Skip to content

Commit

Permalink
feat(manager/gradle): add support for map notation deps in Groovy maps (
Browse files Browse the repository at this point in the history
  • Loading branch information
Churro authored and RahulGautamSingh committed Mar 19, 2023
1 parent 091dd5c commit 8ca5b8a
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 11 deletions.
6 changes: 6 additions & 0 deletions lib/modules/manager/gradle/parser.spec.ts
Expand Up @@ -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);
Expand All @@ -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',
},
]);
});
});
Expand Down
25 changes: 15 additions & 10 deletions lib/modules/manager/gradle/parser/assignments.ts
Expand Up @@ -13,6 +13,7 @@ import {
storeInTokenMap,
storeVarToken,
} from './common';
import { qGroovyMapNotationDependencies } from './dependencies';
import { handleAssignment } from './handlers';

// foo = "1.2.3"
Expand Down Expand Up @@ -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>
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/manager/gradle/parser/dependencies.ts
Expand Up @@ -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)
Expand Down

0 comments on commit 8ca5b8a

Please sign in to comment.