@@ -3,6 +3,7 @@ package com.replaymod.gradle.preprocess
33import org.gradle.api.Plugin
44import org.gradle.api.Project
55import org.gradle.api.Task
6+ import org.gradle.api.file.SourceDirectorySet
67import org.gradle.api.tasks.Copy
78import org.gradle.api.tasks.SourceSetContainer
89import org.gradle.api.tasks.compile.AbstractCompile
@@ -13,6 +14,8 @@ import java.util.*
1314
1415class PreprocessPlugin : Plugin <Project > {
1516 override fun apply (project : Project ) {
17+ val kotlin = project.plugins.hasPlugin(" kotlin" )
18+
1619 val coreVersionFile = project.file(" ../mainVersion" )
1720 val mappingFiles = findMappingFiles(project)
1821
@@ -24,6 +27,12 @@ class PreprocessPlugin : Plugin<Project> {
2427 project.the<SourceSetContainer >().configureEach {
2528 java.setSrcDirs(listOf (parent.file(" src/$name /java" )))
2629 resources.setSrcDirs(listOf (parent.file(" src/$name /resources" )))
30+ if (kotlin) {
31+ withGroovyBuilder { getProperty(" kotlin" ) as SourceDirectorySet }.setSrcDirs(listOf (
32+ parent.file(" src/$name /kotlin" ),
33+ parent.file(" src/$name /java" )
34+ ))
35+ }
2736 }
2837 } else {
2938 val core = project.byVersion(coreVersion)
@@ -61,30 +70,45 @@ class PreprocessPlugin : Plugin<Project> {
6170 project.the<SourceSetContainer >().configureEach {
6271 val inheritedSourceSet = inherited.the<SourceSetContainer >()[name]
6372 val cName = if (name == " main" ) " " else name.capitalize()
73+ val preprocessedKotlin = File (project.buildDir, " preprocessed/$name /kotlin" )
6474 val preprocessedJava = File (project.buildDir, " preprocessed/$name /java" )
6575 val preprocessedResources = File (project.buildDir, " preprocessed/$name /resources" )
6676
77+ if (kotlin) {
78+ val preprocessKotlin = project.tasks.register<PreprocessTask >(" preprocess${cName} Kotlin" ) {
79+ source = inherited.file(inheritedSourceSet.withGroovyBuilder { getProperty(" kotlin" ) as SourceDirectorySet }.srcDirs.first())
80+ generated = preprocessedKotlin
81+ compileTask(inherited.tasks[" compile${cName} Kotlin" ] as AbstractCompile )
82+ mapping = mappingFile
83+ reverseMapping = coreVersion < mcVersion
84+ vars = mutableMapOf (" MC" to mcVersion)
85+ }
86+ val sourceKotlinTask = project.tasks.findByName(" source${name.capitalize()} Kotlin" )
87+ (sourceKotlinTask ? : project.tasks[" compile${cName} Kotlin" ]).dependsOn(preprocessKotlin)
88+ withGroovyBuilder { getProperty(" kotlin" ) as SourceDirectorySet }.setSrcDirs(listOf (preprocessKotlin, preprocessedJava))
89+ }
90+
6791 val preprocessJava = project.tasks.register<PreprocessTask >(" preprocess${cName} Java" ) {
6892 source = inherited.file(inheritedSourceSet.java.srcDirs.first())
6993 generated = preprocessedJava
7094 compileTask(inherited.tasks[" compile${cName} Java" ] as AbstractCompile )
95+ if (kotlin) {
96+ compileTask(inherited.tasks[" compile${cName} Kotlin" ] as AbstractCompile )
97+ }
7198 mapping = mappingFile
7299 reverseMapping = coreVersion < mcVersion
73100 vars = mutableMapOf (" MC" to mcVersion)
74101 }
102+ val sourceJavaTask = project.tasks.findByName(" source${name.capitalize()} Java" )
103+ (sourceJavaTask ? : project.tasks[" compile${cName} Java" ]).dependsOn(preprocessJava)
104+ java.setSrcDirs(listOf (preprocessedJava))
75105
76106 val preprocessResources = project.tasks.register<PreprocessTask >(" preprocess${cName} Resources" ) {
77107 source = inherited.file(inheritedSourceSet.resources.srcDirs.first())
78108 generated = preprocessedResources
79109 vars = mutableMapOf (" MC" to mcVersion)
80110 }
81-
82- val sourceJavaTask = project.tasks.findByName(" source${name.capitalize()} Java" )
83- (sourceJavaTask ? : project.tasks[" compile${cName} Java" ]).dependsOn(preprocessJava)
84-
85111 project.tasks[" process${cName} Resources" ].dependsOn(preprocessResources)
86-
87- java.setSrcDirs(listOf (preprocessedJava))
88112 resources.setSrcDirs(listOf (preprocessedResources))
89113 }
90114
@@ -107,6 +131,9 @@ class PreprocessPlugin : Plugin<Project> {
107131 project.the<SourceSetContainer >().all {
108132 val cName = if (name == " main" ) " " else name.capitalize()
109133
134+ if (kotlin) {
135+ dependsOn(project.tasks.named(" preprocess${cName} Kotlin" ))
136+ }
110137 dependsOn(project.tasks.named(" preprocess${cName} Java" ))
111138 dependsOn(project.tasks.named(" preprocess${cName} Resources" ))
112139 }
0 commit comments