forked from StarOpenSource/Engine
JeremyStarTM
f383261ed9
tl;dr I changed many Javadoc comments, some code, removed dumb or unused stuff and revamped the entire logging infrastructure by yeeting out LogIssuer and CodePart and much, much more
102 lines
3.7 KiB
Groovy
102 lines
3.7 KiB
Groovy
/*
|
|
* STAROPENSOURCE ENGINE SOURCE FILE
|
|
* Copyright (c) 2024 The StarOpenSource Engine Contributors
|
|
* Licensed under the GNU Affero General Public License v3
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Affero General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
// Plugins
|
|
plugins {
|
|
id("java")
|
|
id("io.freefair.lombok") version("${pluginLombok}")
|
|
id("maven-publish")
|
|
}
|
|
|
|
// Register task for Javadoc generation for all subsystems
|
|
tasks.register("javadocAll", Javadoc) {
|
|
// Subprojects to exclude
|
|
def subprojects = [
|
|
":base",
|
|
":ansi",
|
|
":slf4j-compat",
|
|
":graphics",
|
|
":graphics:glfw",
|
|
":graphics:opengl",
|
|
":graphics:vulkan",
|
|
]
|
|
|
|
// Task metadata
|
|
setDescription("Generates Javadoc API documentation for all subprojects.")
|
|
setGroup("documentation")
|
|
|
|
// Make sure the source is delomboked first
|
|
for (String subproject : subprojects)
|
|
dependsOn(project(subproject).getTasks().named("delombok"))
|
|
|
|
// Set output directory, source and classpath
|
|
setSource(subprojects.collect({ project(it).projectDir.getPath() + "/build/generated/sources/delombok/java/main/" }))
|
|
setClasspath(files(subprojects.collect({ project(it).sourceSets.main.compileClasspath })))
|
|
setDestinationDir(file("build/docs/javadoc"))
|
|
|
|
options {
|
|
if (new File(projectDir, "src/main/javadoc/theme.css").exists())
|
|
stylesheetFile = new File(projectDir, "src/main/javadoc/theme.css") // Theming is cool :3
|
|
setMemberLevel(JavadocMemberLevel.PUBLIC) // Only display public stuff
|
|
setOverview("src/main/javadoc/overview.html") // We want a custom overview page to greet the visitor
|
|
setLocale("en_US") // 你好
|
|
|
|
setJFlags([
|
|
"-Duser.language=en_US" // See above
|
|
])
|
|
}
|
|
|
|
// Fix module collisions
|
|
doFirst {
|
|
logger.log(LogLevel.WARN, "If this task fails, make sure to reset all module-info.java files using git or you may encounter issues.")
|
|
|
|
for (String subproject : subprojects) {
|
|
File source = new File(project(subproject).projectDir.getPath() + "/src/main/java/module-info.java")
|
|
File target = new File(project(subproject).projectDir.getPath() + "/src/main/module-info.java")
|
|
|
|
if (source.exists()) {
|
|
target.delete()
|
|
source.renameTo(target)
|
|
}
|
|
}
|
|
}
|
|
doLast {
|
|
for (String subproject : subprojects) {
|
|
File source = new File(project(subproject).projectDir.getPath() + "/src/main/module-info.java")
|
|
File target = new File(project(subproject).projectDir.getPath() + "/src/main/java/module-info.java")
|
|
|
|
if (source.exists()) {
|
|
target.delete()
|
|
source.renameTo(target)
|
|
}
|
|
}
|
|
}
|
|
|
|
// Force doLast block to execute even if task failed
|
|
}
|
|
|
|
// Set group, version and repositories for all projects
|
|
allprojects {
|
|
group = project.group
|
|
version = "v" + project.versioningVersion + "-" + project.versioningType + project.versioningTyperelease + project.versioningFork
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
}
|