1
0
mirror of https://github.com/GeyserMC/Floodgate.git synced 2025-12-19 14:59:20 +00:00

Remove Blossom and use templates

This commit is contained in:
Tim203
2022-12-11 21:34:47 +01:00
parent d3705bfd31
commit 2c92e3e215
5 changed files with 106 additions and 16 deletions

View File

@@ -12,6 +12,7 @@ dependencies {
implementation("net.kyori", "indra-common", "2.0.6")
implementation("org.jfrog.buildinfo", "build-info-extractor-gradle", "4.26.1")
implementation("gradle.plugin.com.github.johnrengelman", "shadow", "7.1.1")
implementation("gradle.plugin.org.jetbrains.gradle.plugin.idea-ext", "gradle-idea-ext", "1.1.7")
}
tasks.withType<KotlinCompile> {

View File

@@ -0,0 +1,93 @@
import org.apache.tools.ant.filters.ReplaceTokens
import org.gradle.plugins.ide.eclipse.model.EclipseModel
import org.gradle.plugins.ide.idea.model.IdeaModel
import org.jetbrains.gradle.ext.ProjectSettings
import org.jetbrains.gradle.ext.TaskTriggersConfig
plugins {
id("org.jetbrains.gradle.plugin.idea-ext")
}
registerGenerateTemplateTasks()
fun Project.registerGenerateTemplateTasks() {
// main and test
extensions.getByType<SourceSetContainer>().all {
val javaDestination = layout.buildDirectory.dir("generated/sources/templates/$name")
val javaSrcDir = layout.projectDirectory.dir("src/$name/templates")
val javaGenerateTask = tasks.register<GenerateSourceTemplates>(
getTaskName("template", "sources")
) {
filteringCharset = Charsets.UTF_8.name()
from(javaSrcDir)
into(javaDestination)
filter<ReplaceTokens>("tokens" to replacements())
}
java.srcDir(javaGenerateTask.map { it.outputs })
val resourcesDestination = layout.buildDirectory.dir("generated/resources/templates/$name")
val resourcesSrcDir = layout.projectDirectory.dir("src/$name/resourceTemplates")
val resourcesGenerateTask = tasks.register<GenerateResourceTemplates>(
getTaskName("template", "resources")
) {
filteringCharset = Charsets.UTF_8.name()
from(resourcesSrcDir)
into(resourcesDestination)
filter<ReplaceTokens>("tokens" to replacements())
}
resources.srcDir(resourcesGenerateTask.map { it.outputs })
}
return configureIdeSync(
tasks.register("allTemplateSources") {
dependsOn(tasks.withType<GenerateSourceTemplates>())
},
tasks.register("allTemplateResources") {
dependsOn(tasks.withType<GenerateResourceTemplates>())
}
)
}
fun Project.configureIdeSync(vararg generateAllTasks: TaskProvider<Task>) {
extensions.findByType<EclipseModel> {
synchronizationTasks(generateAllTasks)
}
extensions.findByType<IdeaModel> {
if (project != null) {
(project as ExtensionAware).extensions.configure<ProjectSettings> {
(this as ExtensionAware).extensions.configure<TaskTriggersConfig> {
afterSync(generateAllTasks)
}
}
}
}
//todo wasn't able to find something for VS(Code)
}
inline fun <reified T : Any> ExtensionContainer.findByType(noinline action: T.() -> Unit) {
val extension = findByType(T::class)
if (extension != null) {
action.invoke(extension)
}
}
abstract class GenerateAnyTemplates : Copy() {
private val replacements = mutableMapOf<String, String>()
fun replaceToken(key: String, value: () -> Any) {
replaceToken(key, value.invoke())
}
fun replaceToken(key: String, value: Any) {
replacements[key] = value.toString()
}
fun replacements(): Map<String, String> {
return replacements
}
}
open class GenerateResourceTemplates : GenerateAnyTemplates()
open class GenerateSourceTemplates : GenerateAnyTemplates()