Skip to content

Commit cf751cb

Browse files
committed
Support multiple sourceSets
1 parent e70e9b0 commit cf751cb

File tree

2 files changed

+47
-49
lines changed

2 files changed

+47
-49
lines changed

src/main/kotlin/com/replaymod/gradle/preprocess/PreprocessPlugin.kt

Lines changed: 46 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,15 @@ import java.util.*
1414
class PreprocessPlugin : Plugin<Project> {
1515
override fun apply(project: Project) {
1616
val coreVersionFile = project.file("../mainVersion")
17-
val originalSrc = "../../src/main/java"
18-
val originalRes = "../../src/main/resources"
19-
val preprocessedSrc = "build/preprocessed/src"
20-
val preprocessedRes = "build/preprocessed/res"
2117
val mappingFiles = findMappingFiles(project)
2218

19+
val parent = project.parent!!
2320
val coreVersion = coreVersionFile.readText().toInt()
2421
val mcVersion = project.extra["mcVersion"] as Int
2522
if (coreVersion == mcVersion) {
26-
project.configure<SourceSetContainer> {
27-
named("main") {
28-
java.setSrcDirs(listOf(originalSrc))
29-
resources.setSrcDirs(listOf(originalRes))
30-
}
23+
project.the<SourceSetContainer>().configureEach {
24+
java.setSrcDirs(listOf(parent.file("src/$name/java")))
25+
resources.setSrcDirs(listOf(parent.file("src/$name/resources")))
3126
}
3227
} else {
3328
val core = project.byVersion(coreVersion)
@@ -62,56 +57,58 @@ class PreprocessPlugin : Plugin<Project> {
6257
}
6358
}
6459

65-
val preprocessJava = project.tasks.create<PreprocessTask>("preprocessJava") {
66-
source = project.file(inherited.the<SourceSetContainer>().getByName("main").java.srcDirs.first())
67-
generated = project.file(preprocessedSrc)
68-
compileTask(inherited.tasks.getByName("compileJava") as AbstractCompile)
69-
project.afterEvaluate {
70-
val projectIntermediaryMappings = project.intermediaryMappings
71-
val inheritedIntermediaryMappings = inherited.intermediaryMappings
72-
if (inheritedIntermediaryMappings != null && projectIntermediaryMappings != null) {
60+
project.the<SourceSetContainer>().configureEach {
61+
val inheritedSourceSet = inherited.the<SourceSetContainer>()[name]
62+
val cName = if (name == "main") "" else name.capitalize()
63+
val preprocessedJava = File(project.buildDir, "preprocessed/$name/java")
64+
val preprocessedResources = File(project.buildDir, "preprocessed/$name/resources")
65+
66+
val preprocessJava = project.tasks.register<PreprocessTask>("preprocess${cName}Java") {
67+
source = inherited.file(inheritedSourceSet.java.srcDirs.first())
68+
generated = preprocessedJava
69+
compileTask(inherited.tasks["compile${cName}Java"] as AbstractCompile)
70+
mapping = mappingFile
71+
reverseMapping = coreVersion < mcVersion
72+
vars = mutableMapOf("MC" to mcVersion)
73+
}
74+
75+
val preprocessResources = project.tasks.register<PreprocessTask>("preprocess${cName}Resources") {
76+
source = inherited.file(inheritedSourceSet.resources.srcDirs.first())
77+
generated = preprocessedResources
78+
vars = mutableMapOf("MC" to mcVersion)
79+
}
80+
81+
val sourceJavaTask = project.tasks.findByName("source${name.capitalize()}Java")
82+
(sourceJavaTask ?: project.tasks["compile${cName}Java"]).dependsOn(preprocessJava)
83+
84+
project.tasks["process${cName}Resources"].dependsOn(preprocessResources)
85+
86+
java.setSrcDirs(listOf(preprocessedJava))
87+
resources.setSrcDirs(listOf(preprocessedResources))
88+
}
89+
90+
project.afterEvaluate {
91+
val projectIntermediaryMappings = project.intermediaryMappings
92+
val inheritedIntermediaryMappings = inherited.intermediaryMappings
93+
if (inheritedIntermediaryMappings != null && projectIntermediaryMappings != null) {
94+
tasks.withType<PreprocessTask>().configureEach {
7395
sourceMappings = inheritedIntermediaryMappings.first
7496
destinationMappings = projectIntermediaryMappings.first
7597
(inheritedIntermediaryMappings.second + projectIntermediaryMappings.second).forEach { dependsOn(it) }
7698
}
7799
}
78-
mapping = mappingFile
79-
reverseMapping = coreVersion < mcVersion
80-
vars = mutableMapOf("MC" to mcVersion)
81100
}
82101

83-
val preprocessResources = project.tasks.create<PreprocessTask>("preprocessResources") {
84-
source = project.file(originalRes)
85-
generated = project.file(preprocessedRes)
86-
vars = mutableMapOf("MC" to mcVersion)
87-
}
102+
project.tasks.register<Copy>("setCoreVersion") {
103+
from(File(project.buildDir, "preprocessed"))
104+
into(File(parent.projectDir, "src"))
88105

89-
val sourceMainJava = project.tasks.findByName("sourceMainJava")
90-
(sourceMainJava ?: project.tasks.getByName("compileJava")).dependsOn(preprocessJava)
91-
project.tasks.getByName("processResources").dependsOn(preprocessResources)
106+
project.the<SourceSetContainer>().all {
107+
val cName = if (name == "main") "" else name.capitalize()
92108

93-
project.configure<SourceSetContainer> {
94-
named("main") {
95-
java.setSrcDirs(listOf(preprocessedSrc))
96-
resources.setSrcDirs(listOf(preprocessedRes))
109+
dependsOn(project.tasks.named("preprocess${cName}Java"))
110+
dependsOn(project.tasks.named("preprocess${cName}Resources"))
97111
}
98-
}
99-
100-
val setCoreVersionJava = project.tasks.create<Copy>("setCoreVersionJava") {
101-
dependsOn(preprocessJava)
102-
from(project.file(preprocessedSrc))
103-
into(project.file(originalSrc))
104-
}
105-
106-
val setCoreVersionResources = project.tasks.create<Copy>("setCoreVersionResources") {
107-
dependsOn(preprocessResources)
108-
from(project.file(preprocessedRes))
109-
into(project.file(originalRes))
110-
}
111-
112-
project.tasks.create("setCoreVersion") {
113-
dependsOn(setCoreVersionJava)
114-
dependsOn(setCoreVersionResources)
115112

116113
doLast {
117114
coreVersionFile.writeText(mcVersion.toString())

src/main/kotlin/com/replaymod/gradle/preprocess/PreprocessTask.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ open class PreprocessTask : DefaultTask() {
5151
var generated: File? = null
5252

5353
@InputDirectory
54+
@SkipWhenEmpty
5455
var source: File? = null
5556

5657
@InputFile

0 commit comments

Comments
 (0)