Skip to content

Commit 6206045

Browse files
committed
add build logic back into examples so CI passes
1 parent fe56e02 commit 6206045

File tree

1 file changed

+67
-1
lines changed

1 file changed

+67
-1
lines changed

procedural/examples/foo-procedures/build.gradle

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
plugins {
22
id 'java'
3-
id "gov.nasa.ammos.aerie.procedural.plugin" version "0.0.1"
3+
// id "gov.nasa.ammos.aerie.procedural.plugin" version "0.0.1"
4+
id 'com.gradleup.shadow' version '8.3.3' // delete once ^ is published
45
}
56

67
java {
@@ -28,3 +29,68 @@ dependencies {
2829
test {
2930
useJUnitPlatform()
3031
}
32+
33+
// delete below once
34+
35+
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
36+
37+
tasks.register('buildAllSchedulingProcedureJars') {
38+
group = 'SchedulingProcedureJars'
39+
40+
dependsOn "generateSchedulingProcedureJarTasks"
41+
dependsOn {
42+
tasks.findAll { task -> task.name.startsWith('buildSchedulingProcedureJar_') }
43+
}
44+
}
45+
46+
tasks.create("generateSchedulingProcedureJarTasks") {
47+
group = 'SchedulingProcedureJars'
48+
49+
final proceduresDir = findFirstMatchingBuildDir("generated/procedures")
50+
51+
if (proceduresDir == null) {
52+
println "No generated procedures folder found"
53+
return
54+
}
55+
println "Generating jar tasks for the following procedures directory: ${proceduresDir}"
56+
57+
final files = file(proceduresDir).listFiles()
58+
if (files.length == 0) {
59+
println "No procedures available within folder ${proceduresDir}"
60+
return
61+
}
62+
63+
files.toList().each { file ->
64+
final nameWithoutExtension = file.name.replace(".java", "")
65+
final taskName = "buildSchedulingProcedureJar_${nameWithoutExtension}"
66+
67+
println "Generating ${taskName} task, which will build ${nameWithoutExtension}.jar"
68+
69+
tasks.create(taskName, ShadowJar) {
70+
group = 'SchedulingProcedureJars'
71+
configurations = [project.configurations.compileClasspath]
72+
from sourceSets.main.output
73+
archiveBaseName = "" // clear
74+
archiveClassifier.set(nameWithoutExtension) // set output jar name
75+
manifest {
76+
attributes 'Main-Class': getMainClassFromGeneratedFile(file)
77+
}
78+
minimize()
79+
} }
80+
}
81+
82+
private String findFirstMatchingBuildDir(String pattern) {
83+
String found = null
84+
final generatedDir = file("build/generated/sources")
85+
generatedDir.mkdirs()
86+
generatedDir.eachDirRecurse { dir -> if (dir.path.contains(pattern)) found = dir.path }
87+
return found
88+
}
89+
90+
private static String getMainClassFromGeneratedFile(File file) {
91+
final fileString = file.toString()
92+
final prefix = "build/generated/sources/annotationProcessor/java/main/"
93+
final index = fileString.indexOf(prefix) + prefix.length()
94+
final trimmed = fileString.substring(index).replace(".java", "")
95+
return trimmed.replace("/", ".")
96+
}

0 commit comments

Comments
 (0)