Skip to content

Commit 519950d

Browse files
authored
Continue refinements of AddPluginRepository (#7132)
1 parent 81927dc commit 519950d

2 files changed

Lines changed: 43 additions & 38 deletions

File tree

rewrite-gradle/src/main/java/org/openrewrite/gradle/plugins/AddSettingsPluginRepository.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,31 @@ private List<Statement> addPluginManagementRepos(List<Statement> statements, J p
138138
if (mapped != statements) {
139139
return mapped;
140140
}
141-
// No existing pluginManagement found — insert a new block
141+
// No existing pluginManagement found — insert after any leading imports
142142
Statement pluginManagementStatement = pluginManagement instanceof J.Block ?
143143
((J.Block) pluginManagement).getStatements().get(0) :
144144
(J.MethodInvocation) pluginManagement;
145-
List<Statement> result = ListUtils.concat(pluginManagementStatement, statements);
146-
return ListUtils.map(result, (i, s) -> i == 1 ? s.withPrefix(Space.format("\n\n")) : s);
145+
146+
int insertIdx = 0;
147+
for (int i = 0; i < statements.size(); i++) {
148+
if (statements.get(i) instanceof J.Import) {
149+
insertIdx = i + 1;
150+
} else {
151+
break;
152+
}
153+
}
154+
155+
if (insertIdx == 0) {
156+
List<Statement> result = ListUtils.concat(pluginManagementStatement, statements);
157+
return ListUtils.map(result, (i, s) -> i == 1 ? s.withPrefix(Space.format("\n\n")) : s);
158+
} else {
159+
List<Statement> result = ListUtils.insert(statements, pluginManagementStatement.withPrefix(Space.format("\n\n")), insertIdx);
160+
if (insertIdx < result.size() - 1) {
161+
int nextIdx = insertIdx + 1;
162+
result = ListUtils.map(result, (i, s) -> i == nextIdx ? s.withPrefix(Space.format("\n\n")) : s);
163+
}
164+
return result;
165+
}
147166
}
148167

149168
private J.@Nullable MethodInvocation unwrapMethodCall(Statement statement, String methodName) {

rewrite-gradle/src/test/java/org/openrewrite/gradle/plugins/AddSettingsPluginRepositoryTest.java

Lines changed: 21 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -504,35 +504,6 @@ void skipWhenExistsGradlePluginPortalAloneKts() {
504504
);
505505
}
506506

507-
@Test
508-
void addToExistingPluginManagementNotFirstStatement() {
509-
rewriteRun(
510-
spec -> spec.recipe(new AddSettingsPluginRepository("gradlePluginPortal", null))
511-
.expectedCyclesThatMakeChanges(1).cycles(3),
512-
settingsGradle(
513-
"""
514-
rootProject.name = "demo"
515-
516-
pluginManagement {
517-
repositories {
518-
mavenLocal()
519-
}
520-
}
521-
""",
522-
"""
523-
rootProject.name = "demo"
524-
525-
pluginManagement {
526-
repositories {
527-
mavenLocal()
528-
gradlePluginPortal()
529-
}
530-
}
531-
"""
532-
)
533-
);
534-
}
535-
536507
@Test
537508
void addToExistingPluginManagementNotFirstStatementKts() {
538509
rewriteRun(
@@ -563,10 +534,10 @@ void addToExistingPluginManagementNotFirstStatementKts() {
563534
}
564535

565536
@Test
566-
void skipWhenExistsPluginManagementNotFirstStatement() {
537+
void skipWhenExistsPluginManagementNotFirstStatementKts() {
567538
rewriteRun(
568539
spec -> spec.recipe(new AddSettingsPluginRepository("gradlePluginPortal", null)),
569-
settingsGradle(
540+
settingsGradleKts(
570541
"""
571542
rootProject.name = "demo"
572543
@@ -581,18 +552,33 @@ void skipWhenExistsPluginManagementNotFirstStatement() {
581552
}
582553

583554
@Test
584-
void skipWhenExistsPluginManagementNotFirstStatementKts() {
555+
void noPluginManagementBlockWithBuildCacheKts() {
585556
rewriteRun(
586-
spec -> spec.recipe(new AddSettingsPluginRepository("gradlePluginPortal", null)),
557+
spec -> spec.recipe(new AddSettingsPluginRepository("mavenCentral", null)),
587558
settingsGradleKts(
588559
"""
589-
rootProject.name = "demo"
560+
buildCache {
561+
local {
562+
isEnabled = false
563+
}
564+
}
590565
566+
rootProject.name = "demo"
567+
""",
568+
"""
591569
pluginManagement {
592570
repositories {
593-
gradlePluginPortal()
571+
mavenCentral()
594572
}
595573
}
574+
575+
buildCache {
576+
local {
577+
isEnabled = false
578+
}
579+
}
580+
581+
rootProject.name = "demo"
596582
"""
597583
)
598584
);

0 commit comments

Comments
 (0)