clean up gradle

This commit is contained in:
dfsek
2021-11-25 11:27:33 -07:00
parent 35194fc09c
commit 0441760cae
9 changed files with 86 additions and 90 deletions

View File

@@ -2,10 +2,10 @@ import com.dfsek.terra.configureCompilation
import com.dfsek.terra.configureDependencies
import com.dfsek.terra.configureDistribution
import com.dfsek.terra.configurePublishing
import com.dfsek.terra.configureVersioning
import com.dfsek.terra.forSubProjects
import com.dfsek.terra.preRelease
import com.dfsek.terra.version
import com.dfsek.terra.versionProjects
import com.dfsek.terra.preRelease
preRelease(true)
@@ -18,11 +18,6 @@ versionProjects(":platforms", version("6.0.0"))
allprojects {
group = "com.dfsek.terra"
afterEvaluate {
configureVersioning()
}
configureCompilation()
configureDependencies()
configurePublishing()
@@ -54,7 +49,13 @@ allprojects {
}
afterEvaluate {
project(":platforms").subprojects.forEach { // Platform projects are where distribution happens
it.configureDistribution()
forSubProjects(":platforms") {
configureDistribution()
}
forSubProjects(":common:addons") {
dependencies {
"compileOnly"(project(":common:api"))
"testImplementation"(project(":common:api"))
}
}
}

View File

@@ -21,13 +21,13 @@ fun Project.addonDir(dir: File, task: Task) {
println("Deleting old addon: " + it.absolutePath)
it.delete()
}
project(":common:addons").subprojects.forEach { addonProject ->
val jar = (addonProject.tasks.named("jar").get() as Jar)
forSubProjects(":common:addons") {
val jar = (tasks.named("jar").get() as Jar)
val boot = if (addonProject.project.extra.has("bootstrap") && addonProject.project.extra.get("bootstrap") as Boolean) "bootstrap/" else ""
val boot = if (extra.has("bootstrap") && extra.get("bootstrap") as Boolean) "bootstrap/" else ""
val target = File(dir, boot + jar.archiveFileName.get())
val base = "${jar.archiveBaseName.get()}-${project.version}"
val base = "${jar.archiveBaseName.get()}-${version}"
println("Copying addon ${jar.archiveFileName.get()} to ${target.absolutePath}. Base name: $base")

View File

@@ -1,21 +0,0 @@
package com.dfsek.terra
import java.io.ByteArrayOutputStream
import org.gradle.api.Project
fun Project.getGitHash(): String {
val stdout = ByteArrayOutputStream()
exec {
commandLine = mutableListOf("git", "rev-parse", "--short", "HEAD")
standardOutput = stdout
}
return stdout.toString().trim()
}
fun Project.gitClone(name: String) {
val stdout = ByteArrayOutputStream()
exec {
commandLine = mutableListOf("git", "clone", name)
standardOutput = stdout
}
}

View File

@@ -43,7 +43,18 @@ fun Project.configureCompilation() {
"ISSUES" to properties["terra.issues"],
"LICENSE" to properties["terra.license"]
)
)
)
}
afterEvaluate {
tasks.withType<ProcessResources> {
include("**/*.*")
filter<ReplaceTokens>(
"tokens" to mapOf(
"VERSION" to version.toString()
)
)
}
}
tasks.withType<Javadoc> {

View File

@@ -49,11 +49,4 @@ fun Project.configureDependencies() {
compileOnly("com.google.guava:guava:30.0-jre")
testImplementation("com.google.guava:guava:30.0-jre")
}
if (project(":common:addons").subprojects.contains(this)) { // If this is an addon project, depend on the API.
dependencies {
compileOnly(project(":common:api"))
testImplementation(project(":common:api"))
}
}
}

View File

@@ -34,9 +34,9 @@ fun Project.configureDistribution() {
val installAddons = tasks.create("installAddons") {
group = "terra"
project(":common:addons").subprojects.forEach {
it.afterEvaluate {
dependsOn(it.tasks.getByName("build")) // Depend on addon JARs
forSubProjects(":common:addons") {
afterEvaluate {
dependsOn(tasks.getByName("build")) // Depend on addon JARs
}
}
@@ -52,12 +52,12 @@ fun Project.configureDistribution() {
dest.parentFile.mkdirs()
val zip = ZipOutputStream(FileOutputStream(dest))
project(":common:addons").subprojects.forEach { addonProject ->
val jar = (addonProject.tasks.named("jar").get() as Jar)
forSubProjects(":common:addons") {
val jar = (tasks.named("jar").get() as Jar)
println("Packaging addon ${jar.archiveFileName.get()} to ${dest.absolutePath}.")
val boot = if(addonProject.project.extra.has("bootstrap") && addonProject.project.extra.get("bootstrap") as Boolean) "bootstrap/" else ""
val boot = if(extra.has("bootstrap") && extra.get("bootstrap") as Boolean) "bootstrap/" else ""
val entry = ZipEntry("addons/$boot${jar.archiveFileName.get()}")
zip.putNextEntry(entry)
@@ -88,10 +88,10 @@ fun Project.configureDistribution() {
resources.computeIfAbsent("lang") { ArrayList() }.add(it.name)
}
project(":common:addons").subprojects.forEach { addonProject ->
val jar = (addonProject.tasks.named("jar").get() as Jar).archiveFileName.get()
forSubProjects(":common:addons") {
val jar = (tasks.named("jar").get() as Jar).archiveFileName.get()
resources.computeIfAbsent(
if (addonProject.project.extra.has("bootstrap") && addonProject.project.extra.get("bootstrap") as Boolean) "addons/bootstrap"
if (extra.has("bootstrap") && extra.get("bootstrap") as Boolean) "addons/bootstrap"
else "addons"
) { ArrayList() }.add(jar)
}

View File

@@ -0,0 +1,49 @@
package com.dfsek.terra
import org.gradle.api.Action
import org.gradle.api.Project
import java.io.ByteArrayOutputStream
var isPrerelease = false
fun Project.getGitHash(): String {
val stdout = ByteArrayOutputStream()
exec {
commandLine = mutableListOf("git", "rev-parse", "--short", "HEAD")
standardOutput = stdout
}
return stdout.toString().trim()
}
fun Project.gitClone(name: String) {
val stdout = ByteArrayOutputStream()
exec {
commandLine = mutableListOf("git", "clone", name)
standardOutput = stdout
}
}
fun Project.forSubProjects(project: String, action: Action<Project>) {
project(project).subprojects.forEach {
action.execute(it)
}
}
fun preRelease(preRelease: Boolean) {
isPrerelease = preRelease
}
fun Project.versionProjects(project: String, version: String) {
forSubProjects(project) {
this.version = version
}
}
fun Project.version(version: String): String {
return if (!isPrerelease)
version
else //Only use git hash if it's a prerelease.
"$version-BETA+${getGitHash()}"
}

View File

@@ -1,37 +0,0 @@
package com.dfsek.terra
import org.apache.tools.ant.filters.ReplaceTokens
import org.gradle.api.Project
import org.gradle.kotlin.dsl.filter
import org.gradle.kotlin.dsl.withType
import org.gradle.language.jvm.tasks.ProcessResources
var isPrerelease = false
fun preRelease(preRelease: Boolean) {
isPrerelease = preRelease
}
fun Project.versionProjects(project: String, version: String) {
project(project).subprojects.forEach {
it.version = version
}
}
fun Project.version(version: String): String {
return if (!isPrerelease)
version
else //Only use git hash if it's a prerelease.
"$version-BETA+${getGitHash()}"
}
fun Project.configureVersioning() {
tasks.withType<ProcessResources> {
include("**/*.*")
filter<ReplaceTokens>(
"tokens" to mapOf(
"VERSION" to version.toString()
)
)
}
}

View File

@@ -51,7 +51,7 @@ public class DependencySorter {
if(!range.isSatisfiedBy(dependency.getVersion())) {
throw new DependencyVersionException("Addon " + addon.getID() + " specifies dependency on " + id + ", versions " + range +
", but non-matching version " + dependency.getVersion() + " is installed..");
", but non-matching version " + dependency.getVersion().getFormatted() + " is installed..");
}
if(!visited.get(dependency.getID())) { // if we've not visited it yet