Skip to content

Commit

Permalink
feat(manager/gradle): enable property accessors for registry URLs (#1…
Browse files Browse the repository at this point in the history
  • Loading branch information
Churro committed Dec 29, 2022
1 parent 0fc1731 commit 80d53a1
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 29 deletions.
7 changes: 6 additions & 1 deletion lib/modules/manager/gradle/parser.spec.ts
Expand Up @@ -366,7 +366,7 @@ describe('modules/manager/gradle/parser', () => {
`('$accessor', ({ accessor }) => {
const input = `
baz = "1.2.3"
api("foo:bar:$\{${String(accessor)}("baz")}")
api("foo:bar:$\{${String(accessor)}("baz") as String}")
`;
const { deps } = parseGradle(input);
expect(deps).toMatchObject([
Expand Down Expand Up @@ -562,6 +562,7 @@ describe('modules/manager/gradle/parser', () => {
${''} | ${'maven(url = uri("https://foo.bar/baz"))'} | ${'https://foo.bar/baz'}
${''} | ${'maven(uri("https://foo.bar/baz"))'} | ${'https://foo.bar/baz'}
${'base="https://foo.bar"'} | ${'maven(uri("${base}/baz"))'} | ${'https://foo.bar/baz'}
${'base="https://foo.bar"'} | ${'maven(uri(property("base")))'} | ${'https://foo.bar'}
${'base="https://foo.bar"'} | ${'maven(uri(base))'} | ${'https://foo.bar'}
${''} | ${'maven(uri(["https://foo.bar/baz"]))'} | ${null}
${''} | ${'maven { ["https://foo.bar/baz"] }'} | ${null}
Expand All @@ -571,6 +572,7 @@ describe('modules/manager/gradle/parser', () => {
${'base="https://foo.bar"'} | ${'maven { url uri("${base}/baz") }'} | ${'https://foo.bar/baz'}
${''} | ${'maven { url = "https://foo.bar/baz" }'} | ${'https://foo.bar/baz'}
${'base="https://foo.bar"'} | ${'maven { url = "${base}/baz" }'} | ${'https://foo.bar/baz'}
${'base="https://foo.bar"'} | ${'maven { url = property("base") }'} | ${'https://foo.bar'}
${'base="https://foo.bar"'} | ${'maven { url = base }'} | ${'https://foo.bar'}
${''} | ${'maven { url = uri("https://foo.bar/baz") }'} | ${'https://foo.bar/baz'}
${'base="https://foo.bar"'} | ${'maven { url = uri("${base}/baz") }'} | ${'https://foo.bar/baz'}
Expand All @@ -579,9 +581,12 @@ describe('modules/manager/gradle/parser', () => {
${'base="https://foo.bar"'} | ${'maven { name "baz"\nurl = "${base}/${name}" }'} | ${'https://foo.bar/baz'}
${'base="https://foo.bar"'} | ${'maven { name = "baz"\nurl = "${base}/${name}" }'} | ${'https://foo.bar/baz'}
${'some="baz"'} | ${'maven { name = "${some}"\nurl = "https://foo.bar/${name}" }'} | ${'https://foo.bar/baz'}
${'some="foo.bar/baz"'} | ${'maven { name = property("some")\nurl = "https://${name}" }'} | ${'https://foo.bar/baz'}
${'some="baz"'} | ${'maven { name = some\nurl = "https://foo.bar/${name}" }'} | ${'https://foo.bar/baz'}
${''} | ${'maven { setUrl("https://foo.bar/baz") }'} | ${'https://foo.bar/baz'}
${''} | ${'maven { setUrl(uri("https://foo.bar/baz")) }'} | ${'https://foo.bar/baz'}
${'base="https://foo.bar"'} | ${'maven { setUrl("${base}/baz") }'} | ${'https://foo.bar/baz'}
${'base="https://foo.bar"'} | ${'maven { setUrl(project.property("base")) }'} | ${'https://foo.bar'}
${'base="https://foo.bar"'} | ${'maven { setUrl(base) }'} | ${'https://foo.bar'}
${''} | ${'maven { setUrl(["https://foo.bar/baz"]) }'} | ${null}
${''} | ${'maven { setUrl("foo", "bar") }'} | ${null}
Expand Down
3 changes: 2 additions & 1 deletion lib/modules/manager/gradle/parser/common.ts
Expand Up @@ -166,7 +166,8 @@ export const qPropertyAccessIdentifier = q
startsWith: '(',
endsWith: ')',
search: q.begin<Ctx>().join(qStringValueAsSymbol).end(),
});
})
.opt(q.sym<Ctx>('as').sym('String'));

// "foo${bar}baz"
export const qTemplateString = q
Expand Down
52 changes: 25 additions & 27 deletions lib/modules/manager/gradle/parser/registry-urls.ts
Expand Up @@ -6,6 +6,7 @@ import { qAssignments } from './assignments';
import {
REGISTRY_URLS,
cleanupTempVars,
qPropertyAccessIdentifier,
qTemplateString,
qVariableAccessIdentifier,
storeInTokenMap,
Expand All @@ -17,6 +18,22 @@ import {
} from './handlers';
import { qPlugins } from './plugins';

// uri("https://foo.bar/baz")
// "https://foo.bar/baz"
const qUri = q
.alt(
q.sym<Ctx>('uri').tree({
maxDepth: 1,
search: q.alt<Ctx>(
qTemplateString,
qPropertyAccessIdentifier,
qVariableAccessIdentifier
),
}),
q.alt(qTemplateString, qPropertyAccessIdentifier, qVariableAccessIdentifier)
)
.handler((ctx) => storeInTokenMap(ctx, 'registryUrl'));

// mavenCentral()
// mavenCentral { ... }
const qPredefinedRegistries = q
Expand Down Expand Up @@ -48,17 +65,7 @@ const qCustomRegistryUrl = q
maxDepth: 1,
startsWith: '(',
endsWith: ')',
search: q
.begin<Ctx>()
.opt(q.sym<Ctx>('url').op('='))
.alt(
q.sym<Ctx>('uri').tree({
maxDepth: 1,
search: q.alt<Ctx>(qTemplateString, qVariableAccessIdentifier),
}),
q.alt(qTemplateString, qVariableAccessIdentifier)
)
.end(),
search: q.begin<Ctx>().opt(q.sym<Ctx>('url').op('=')).join(qUri).end(),
}),
q.tree({
type: 'wrapped-tree',
Expand All @@ -69,31 +76,22 @@ const qCustomRegistryUrl = q
q
.sym<Ctx>('name')
.opt(q.op('='))
.alt(qTemplateString, qVariableAccessIdentifier)
.handler((ctx) => storeInTokenMap(ctx, 'name')),
q
.sym<Ctx>('url')
.opt(q.op('='))
.alt(
q.sym<Ctx>('uri').tree({
maxDepth: 1,
search: q.alt<Ctx>(qTemplateString, qVariableAccessIdentifier),
}),
q.alt(qTemplateString, qVariableAccessIdentifier)
),
qTemplateString,
qPropertyAccessIdentifier,
qVariableAccessIdentifier
)
.handler((ctx) => storeInTokenMap(ctx, 'name')),
q.sym<Ctx>('url').opt(q.op('=')).join(qUri),
q.sym<Ctx>('setUrl').tree({
maxDepth: 1,
startsWith: '(',
endsWith: ')',
search: q
.begin<Ctx>()
.alt(qTemplateString, qVariableAccessIdentifier)
.end(),
search: q.begin<Ctx>().join(qUri).end(),
})
),
})
)
.handler((ctx) => storeInTokenMap(ctx, 'registryUrl'))
.handler(handleCustomRegistryUrl)
.handler(cleanupTempVars);

Expand Down

0 comments on commit 80d53a1

Please sign in to comment.