Skip to content

Commit cfdf200

Browse files
committed
NCL-9314 Add compatibility layer for groovy scripts. Updates for README.
1 parent 7637c0b commit cfdf200

9 files changed

Lines changed: 88 additions & 17 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ The `analyzer` directory contains the gradle plugin that generates metadata info
3232
the project version.
3333

3434
The latest version of the Analyzer init script can be retrieved from
35-
https://repo1.maven.org/maven2/org/jboss/gm/analyzer/3.24/analyzer-3.24-init.gradle
35+
https://repo1.maven.org/maven2/org/jboss/pnc/gradle-manipulator/analyzer/4.0/analyzer-4.0-init.gradle
3636

3737
## Manipulation
3838

analyzer/src/main/resources/analyzer-init.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ initscript {
1313
}
1414

1515
allprojects {
16-
1716
ext.gmeAnalyse = true
1817

1918
apply plugin: org.jboss.pnc.gradlemanipulator.analyzer.alignment.AlignmentPlugin

analyzer/src/main/resources/gme.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,4 @@ allprojects {
4040
logger.info("Applying plugin org.jboss.pnc.gradlemanipulator.manipulation.ManipulationPlugin to project in {}", project.getProjectDir())
4141
apply plugin: org.jboss.pnc.gradlemanipulator.manipulation.ManipulationPlugin
4242
}
43-
4443
}

build.gradle.kts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import net.linguica.gradle.maven.settings.MavenSettingsPlugin.MAVEN_SETTINGS_EXT
1313
import net.linguica.gradle.maven.settings.MavenSettingsPluginExtension
1414
import org.ajoberstar.grgit.Grgit
1515
import org.apache.maven.settings.building.SettingsBuildingException
16+
import org.gradle.kotlin.dsl.project
1617

1718
plugins {
1819
java
@@ -142,7 +143,7 @@ tasks.register("fixupReadme") {
142143
if ("true" == System.getProperty("release", "") && project == project.rootProject) {
143144
val tmp = File(System.getProperty("java.io.tmpdir"))
144145
val source = File(project.rootDir, "README.md")
145-
val searchString = "https://repo1.maven.org/maven2/org/jboss/gm/analyzer"
146+
val searchString = "https://repo1.maven.org/maven2/org/jboss/pnc/gradle-manipulator/analyzer"
146147

147148
if (!source.exists() || Files.readAllLines(source.toPath()).none { s -> s.contains(searchString) }) {
148149
throw GradleException("Unable to find '$searchString' in README.md")
@@ -350,9 +351,9 @@ subprojects {
350351

351352
val testFixturesCompile by configurations.creating { extendsFrom(configurations["implementation"]) }
352353

353-
configurations.create("testFixturesRuntime") {
354-
extendsFrom(configurations["runtimeOnly"], configurations["testFixturesCompile"])
355-
}
354+
configurations.create(
355+
"testFixturesRuntime",
356+
Action { extendsFrom(configurations["runtimeOnly"], configurations["testFixturesCompile"]) })
356357

357358
val testFixturesUsageImplementation by
358359
configurations.creating {
@@ -367,12 +368,14 @@ subprojects {
367368
configurations["testImplementation"].extendsFrom(testFixturesUsageImplementation)
368369
configurations["testRuntimeOnly"].extendsFrom(testFixturesUsageRuntimeOnly)
369370

370-
sourceSets.create("testFixtures") {
371-
java.srcDir("src/testFixtures/java")
372-
resources.srcDir("src/testFixtures/resources")
373-
compileClasspath = sourceSets["main"].output + configurations["testFixturesCompile"]
374-
runtimeClasspath = output + compileClasspath + configurations["testFixturesRuntime"]
375-
}
371+
sourceSets.create(
372+
"testFixtures",
373+
Action {
374+
java.srcDir("src/testFixtures/java")
375+
resources.srcDir("src/testFixtures/resources")
376+
compileClasspath = sourceSets["main"].output + configurations["testFixturesCompile"]
377+
runtimeClasspath = output + compileClasspath + configurations["testFixturesRuntime"]
378+
})
376379

377380
dependencies {
378381
outputDirectories(sourceSets["testFixtures"].output)
@@ -435,6 +438,8 @@ subprojects {
435438
exclude(dependency("org.commonjava.atlas.maven:.*:.*"))
436439
exclude(dependency("org.jboss.pnc.maven-manipulator:.*:.*"))
437440
exclude(dependency("org.slf4j:.*:.*"))
441+
// Prevent org.jboss.gm.common.groovy.BaseScript from being removed.
442+
exclude(project(":common"))
438443
}
439444
}
440445

cli/src/test/java/org/jboss/pnc/gradlemanipulator/cli/MainTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,44 @@ public void testInvokeGroovy() throws Exception {
197197
assertTrue(systemOutRule.getLinesNormalized().contains("Executor org.zeroturnaround.exec.ProcessExecutor"));
198198
}
199199

200+
@Test
201+
public void testInvokeGroovyFails1() throws Exception {
202+
final File projectRoot = new File(MainTest.class.getClassLoader().getResource("build.gradle").getPath());
203+
final URL groovy = Thread.currentThread().getContextClassLoader().getResource("sample-bad1.groovy");
204+
205+
Main m = new Main();
206+
String[] args = new String[] {
207+
"-t",
208+
projectRoot.getParentFile().getAbsolutePath(),
209+
"tasks",
210+
"-DgroovyScripts=" + groovy };
211+
try {
212+
m.run(args);
213+
fail("No exception thrown");
214+
} catch (ManipulationException e) {
215+
assertTrue(e.getCause().getMessage().contains("Getting the project is not supported for Groovy in stage"));
216+
}
217+
}
218+
219+
@Test
220+
public void testInvokeGroovyFails2() throws Exception {
221+
final File projectRoot = new File(MainTest.class.getClassLoader().getResource("build.gradle").getPath());
222+
final URL groovy = Thread.currentThread().getContextClassLoader().getResource("sample-bad2.groovy");
223+
224+
Main m = new Main();
225+
String[] args = new String[] {
226+
"-t",
227+
projectRoot.getParentFile().getAbsolutePath(),
228+
"tasks",
229+
"-DgroovyScripts=" + groovy };
230+
try {
231+
m.run(args);
232+
fail("No exception thrown");
233+
} catch (ManipulationException e) {
234+
assertTrue(e.getCause().getMessage().contains("Getting the model is not supported for Groovy in stage"));
235+
}
236+
}
237+
200238
@Test
201239
public void testDisableGME() throws Exception {
202240

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import org.jboss.pnc.mavenmanipulator.core.groovy.GMEBaseScript
2+
import org.jboss.pnc.mavenmanipulator.core.groovy.InvocationPoint
3+
import org.jboss.pnc.mavenmanipulator.core.groovy.InvocationStage
4+
import org.jboss.gm.common.groovy.BaseScript
5+
6+
@InvocationPoint(invocationPoint = InvocationStage.FIRST)
7+
@GMEBaseScript BaseScript gmeScript
8+
9+
println("Running Groovy script on " + gmeScript.getBaseDir())
10+
println("Project " + gmeScript.getProject())
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import org.jboss.pnc.mavenmanipulator.core.groovy.GMEBaseScript
2+
import org.jboss.pnc.mavenmanipulator.core.groovy.InvocationPoint
3+
import org.jboss.pnc.mavenmanipulator.core.groovy.InvocationStage
4+
import org.jboss.gm.common.groovy.BaseScript
5+
6+
@InvocationPoint(invocationPoint = InvocationStage.FIRST)
7+
@GMEBaseScript BaseScript gmeScript
8+
9+
println("Running Groovy script on " + gmeScript.getBaseDir())
10+
println("Model " + gmeScript.getModel())

cli/src/test/resources/sample.groovy

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import org.jboss.pnc.mavenmanipulator.core.groovy.GMEBaseScript
22
import org.jboss.pnc.mavenmanipulator.core.groovy.InvocationPoint
33
import org.jboss.pnc.mavenmanipulator.core.groovy.InvocationStage
4-
import org.jboss.pnc.gradlemanipulator.common.groovy.BaseScript
4+
import org.jboss.gm.common.groovy.BaseScript
55
import org.jboss.pnc.gradlemanipulator.common.utils.PluginUtils
66

7-
@GrabResolver(name='private', root='https://maven.repository.redhat.com/techpreview/all/')
8-
@Grab('org.zeroturnaround:zt-exec:1.10')
9-
107
@InvocationPoint(invocationPoint = InvocationStage.FIRST)
118
@GMEBaseScript BaseScript gmeScript
129

1310
println("Running Groovy script on " + gmeScript.getBaseDir())
1411
println("Known properties " + gmeScript.getUserProperties())
12+
println("FileIO " + gmeScript.getFileIO())
13+
println("InvocationStage " + gmeScript.getInvocationStage())
1514

1615
println(PluginUtils.getSupportedPlugins())
1716
// Hack to avoid using imports and groovy script causing errors in IntelliJ.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.jboss.gm.common.groovy;
2+
3+
/**
4+
* Abstract class that should be used by developers wishing to implement groovy scripts
5+
* for GME.
6+
*/
7+
public abstract class BaseScript extends org.jboss.pnc.gradlemanipulator.common.groovy.BaseScript {
8+
{
9+
println("Deprecated Groovy API - switch to importing org.jboss.pnc.gradlemanipulator");
10+
}
11+
}

0 commit comments

Comments
 (0)