diff --git a/src/main/java/com/canonical/devpackspring/rewrite/visitors/GroovyAddPluginVisitor.java b/src/main/java/com/canonical/devpackspring/rewrite/visitors/GroovyAddPluginVisitor.java index e15e9db7..c118ad31 100644 --- a/src/main/java/com/canonical/devpackspring/rewrite/visitors/GroovyAddPluginVisitor.java +++ b/src/main/java/com/canonical/devpackspring/rewrite/visitors/GroovyAddPluginVisitor.java @@ -17,7 +17,6 @@ package com.canonical.devpackspring.rewrite.visitors; import java.nio.file.Paths; -import java.util.Arrays; import java.util.List; import com.canonical.devpackspring.rewrite.StatementUtil; @@ -37,6 +36,8 @@ public class GroovyAddPluginVisitor extends GroovyIsoVisitor { private final String pluginTemplateGroovy = "plugins {\n\tid '%s' version '%s'\n}\n"; + private final String builtInTemplateGroovy = "plugins {\n\tid '%s'\n}\n"; + private final AddPluginVisitor visitor; private final SourceFile templateSource; @@ -46,10 +47,10 @@ public GroovyAddPluginVisitor(String pluginName, String pluginVersion) { .groovyParser(GroovyParser.builder().logCompilationWarningsAndErrors(true)); Parser parser = builder.build(); InMemoryExecutionContext context = new InMemoryExecutionContext(); + var pluginDefinition = (pluginVersion != null) ? String.format(pluginTemplateGroovy, pluginName, pluginVersion) + : String.format(builtInTemplateGroovy, pluginName); templateSource = parser - .parseInputs( - Arrays.asList(Parser.Input.fromString(Paths.get("/tmp/build.gradle"), - String.format(pluginTemplateGroovy, pluginName, pluginVersion))), + .parseInputs(List.of(Parser.Input.fromString(Paths.get("/tmp/build.gradle"), pluginDefinition)), Paths.get("/tmp"), context) .findFirst() .orElseThrow(() -> new IllegalArgumentException("Could not parse as Gradle")); diff --git a/src/main/java/com/canonical/devpackspring/rewrite/visitors/KotlinAddPluginVisitor.java b/src/main/java/com/canonical/devpackspring/rewrite/visitors/KotlinAddPluginVisitor.java index 7478ddfb..a42582ad 100644 --- a/src/main/java/com/canonical/devpackspring/rewrite/visitors/KotlinAddPluginVisitor.java +++ b/src/main/java/com/canonical/devpackspring/rewrite/visitors/KotlinAddPluginVisitor.java @@ -17,7 +17,6 @@ package com.canonical.devpackspring.rewrite.visitors; import java.nio.file.Paths; -import java.util.Arrays; import java.util.List; import com.canonical.devpackspring.rewrite.StatementUtil; @@ -37,6 +36,8 @@ public class KotlinAddPluginVisitor extends KotlinIsoVisitor { private final String pluginTemplateKotlin = "plugins {\n\tid(\"%s\") version \"%s\"\n}\n"; + private final String builtInTemplateKotlin = "plugins {\n\tid(\"%s\")\n}\n"; + private final AddPluginVisitor visitor; private final SourceFile templateSource; @@ -48,10 +49,10 @@ public KotlinAddPluginVisitor(String pluginName, String pluginVersion) { InMemoryExecutionContext context = new InMemoryExecutionContext(); // Use dummy file name to force the use of kotlin parser + var pluginDefinition = (pluginVersion != null) ? String.format(pluginTemplateKotlin, pluginName, pluginVersion) + : String.format(builtInTemplateKotlin, pluginName); templateSource = parser - .parseInputs( - Arrays.asList(Parser.Input.fromString(Paths.get("/tmp/build.gradle.kts"), - String.format(pluginTemplateKotlin, pluginName, pluginVersion))), + .parseInputs(List.of(Parser.Input.fromString(Paths.get("/tmp/build.gradle.kts"), pluginDefinition)), Paths.get("/tmp"), context) .findFirst() .orElseThrow(() -> new IllegalArgumentException("Could not parse as Gradle Kotlin")); diff --git a/src/test/java/com/canonical/devpackspring/rewrite/AddGradlePluginRecipeTests.java b/src/test/java/com/canonical/devpackspring/rewrite/AddGradlePluginRecipeTests.java index 58107b3a..cc04e7fd 100644 --- a/src/test/java/com/canonical/devpackspring/rewrite/AddGradlePluginRecipeTests.java +++ b/src/test/java/com/canonical/devpackspring/rewrite/AddGradlePluginRecipeTests.java @@ -22,6 +22,35 @@ public class AddGradlePluginRecipeTests implements RewriteTest { + @Test + void testGroovyAddBuiltInPlugin() { + rewriteRun(spec -> spec.recipe(new AddGradlePluginRecipe("java", null, false)), Assertions.buildGradle(""" + group = 'com.example' + version = '1.0' + """, """ + plugins { + id 'java' + } + group = 'com.example' + version = '1.0'""")); + + } + + @Test + void testKotlinAddBuiltInPlugin() { + rewriteRun(spec -> spec.recipe(new AddGradlePluginRecipe("java", null, true)), Assertions.buildGradleKts(""" + group = "com.example" + version = "1.0" + """, """ + plugins { + id("java") + } + group = "com.example" + version = "1.0" + """)); + + } + @Test void testGroovyAddPluginNoPluginBlock() { rewriteRun(spec -> spec.recipe(new AddGradlePluginRecipe("org.springframework.boot", "3.4.3", false)),