Skip to content

Commit

Permalink
BUILD: extract generate config
Browse files Browse the repository at this point in the history
Signed-off-by: imkiva <imkiva@islovely.icu>
  • Loading branch information
imkiva committed Apr 22, 2022
1 parent 8971a43 commit cc0711e
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 30 deletions.
2 changes: 1 addition & 1 deletion base/.gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
build
.gradle
src/main/gen
/src/main/resources/META-INF/native-image
src/main/resources/META-INF/native-image
25 changes: 5 additions & 20 deletions base/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
// Copyright (c) 2020-2022 Yinsen (Tesla) Zhang.
// Use of this source code is governed by the MIT license that can be found in the LICENSE.md file.
import org.aya.gradle.CommonTasks
CommonTasks.nativeImageConfig(project)

dependencies {
api(project(":tools"))
api(project(":pretty"))
Expand All @@ -20,31 +23,13 @@ val generateVersion = tasks.register<org.aya.gradle.GenerateVersionTask>("genera
outputDir = genDir.resolve("org/aya/prelude")
}

val configGenDir = file("build/native-config")
val configTemplateFile = file("reflect-config.txt")
val metaInfDir = file("src/main/resources/META-INF/native-image")

val generateReflectionConfig = tasks.register<org.aya.gradle.GenerateReflectionConfigTask>("generateReflectionConfig") {
outputDir = configGenDir
inputFile = configTemplateFile
doFirst {
metaInfDir.mkdirs()
}
doLast {
copy {
from(configGenDir)
into(metaInfDir)
}
}
}

idea.module.generatedSourceDirs.add(genDir)
sourceSets.main {
java.srcDirs(genDir)
}

tasks.compileJava { dependsOn(generateVersion); dependsOn(generateReflectionConfig) }
tasks.sourcesJar { dependsOn(generateVersion); dependsOn(generateReflectionConfig) }
tasks.compileJava { dependsOn(generateVersion) }
tasks.sourcesJar { dependsOn(generateVersion) }

val cleanGenerated = tasks.register("cleanGenerated") {
group = "build"
Expand Down
8 changes: 0 additions & 8 deletions base/reflect-config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,3 @@ org.aya.core.serde.SerPat$Ctor

# TODO: generate record from file
# @<xxx.java>:org.aya.core.serde.SerTerm$:record ([a-zA-Z0-9_]+)

# Library Compiler, for Gson
org.aya.cli.library.json.LibraryConfigData
org.aya.cli.library.json.LibraryDependencyData

# REPL commands, for our REPL framework
org.aya.repl.Command
org.aya.cli.repl.ReplCommands${1,11}
32 changes: 31 additions & 1 deletion buildSrc/src/main/groovy/org/aya/gradle/CommonTasks.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,39 @@ import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.jvm.tasks.Jar

/**
* @author ice1000
* @author ice1000, kiva
*/
final class CommonTasks {
static TaskProvider<GenerateReflectionConfigTask> nativeImageConfig(Project project) {
var root = project.projectDir.toPath()
var configGenDir = root.resolve("build/native-config").toFile()
var configTemplateFile = root.resolve("reflect-config.txt").toFile()
var metaInfDir = root.resolve(
"src/main/resources/META-INF/native-image/${project.group}.${project.name}"
).toFile()

var task = project.tasks.register('generateNativeImageConfig', GenerateReflectionConfigTask) {
outputDir = configGenDir
inputFile = configTemplateFile
doFirst {
metaInfDir.mkdirs()
}
doLast {
project.copy {
from(configGenDir)
into(metaInfDir)
}
}
}
var cleanMetaInf = project.tasks.register("cleanNativeImageConfig") {
metaInfDir.deleteDir()
}
project.tasks.named("compileJava") { dependsOn(task) }
project.tasks.named("sourcesJar") { dependsOn(task) }
project.tasks.named("clean") { dependsOn(cleanMetaInf) }
task
}

static TaskProvider<Jar> fatJar(Project project, String mainClass) {
project.tasks.register('fatJar', Jar) {
archiveClassifier.set 'fat'
Expand Down
1 change: 1 addition & 0 deletions cli/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
src/main/resources/META-INF/native-image
1 change: 1 addition & 0 deletions cli/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import org.apache.tools.ant.taskdefs.condition.Os
import org.aya.gradle.CommonTasks
CommonTasks.fatJar(project, "org.aya.cli.Main")
CommonTasks.nativeImageConfig(project)

dependencies {
api(project(":base"))
Expand Down
6 changes: 6 additions & 0 deletions cli/reflect-config.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Library Compiler, for Gson
org.aya.cli.library.json.LibraryConfigData
org.aya.cli.library.json.LibraryDependencyData

# REPL commands, for our REPL framework
org.aya.cli.repl.ReplCommands${1,11}

0 comments on commit cc0711e

Please sign in to comment.