Files
orx/build.gradle
2025-09-13 13:44:17 +02:00

140 lines
4.7 KiB
Groovy

plugins {
alias(libs.plugins.nebula.release)
alias(libs.plugins.nmcp)
id("org.openrndr.extra.convention.dokka")
}
repositories {
mavenCentral()
}
tasks.register('buildMainReadme') {
doFirst {
def subProjects = project.subprojects
//.findAll { !it.name.contains("kinect-common") && !it.name.contains
// ("kinect-v1-") }
// Load README.md and find [begin, end] section to replace
def mainReadme = file("README.md")
def lines = mainReadme.readLines()
def begin = lines.findIndexOf { it == "<!-- __orxListBegin__ -->" }
def end = lines.findIndexOf { it == "<!-- __orxListEnd__ -->" }
if (begin == -1 || end == -1) {
println("Comments for orx list generation not found in README.md!")
return
}
def header = lines.subList(0, begin + 1)
def footer = lines.subList(end, lines.size())
def newReadme = []
for (line in header) {
newReadme.add(line)
}
// Search for the description at the top of the readme.
// Skip the hash character from the headline, then start
// on the next line and continue until the next empty line.
// Don't fall into Windows line breaks.
def descriptionRx = ~/(?s)#.*?\n(.+?)\n\r?\n/
// Note: the readme needs an empty line after the description
def orxMultiplatform = []
def orxJVMOnly = []
// Build orx list
for (sub in subProjects) {
def orxReadmeFile = sub.file("README.md")
if (orxReadmeFile.exists()) {
def orxReadmeText = orxReadmeFile.getText()
orxReadmeText.find(descriptionRx) {
description ->
def trimmedDescription = description[1].trim() //.strip() supports unicode, java11 only
.replace("\n", " ").replace("\r", "")
def path = sub.path.substring(1).replace(":", "/")
if (path.startsWith("orx-jvm")) {
orxJVMOnly.add("| [`${sub.name}`]($path/) " +
"| $trimmedDescription |")
} else {
orxMultiplatform.add("| [`${sub.name}`]($path/) " +
"| $trimmedDescription |")
}
}
} else {
println("${sub.name}/README.md not found!")
}
}
newReadme.add("\n## Multiplatform\n")
newReadme.add("| name" + "&nbsp;" * 36 + " | description |")
newReadme.add("| --- | --- |")
newReadme.addAll(orxMultiplatform)
newReadme.add("\n## JVM only\n")
newReadme.add("| name" + "&nbsp;" * 36 + " | description |")
newReadme.add("| --- | --- |")
newReadme.addAll(orxJVMOnly)
for (line in footer) {
newReadme.add(line)
}
// Write result
if (mainReadme.exists()) {
mainReadme.delete()
}
mainReadme.write(newReadme.join("\n"))
}
}
group = "org.openrndr.extra"
nmcpAggregation {
centralPortal {
username.set(findProperty("ossrhUsername") ?: System.getenv("OSSRH_USERNAME"))
password.set(findProperty("ossrhPassword") ?: System.getenv("OSSRH_PASSWORD"))
// publish manually from the portal
publishingType = "USER_MANAGED"
}
// Publish all projects that apply the 'maven-publish' plugin
publishAllProjectsProbablyBreakingProjectIsolation()
}
//nexusPublishing {
// repositories {
// sonatype {
// username.set(findProperty("ossrhUsername") ?: System.getenv("OSSRH_USERNAME"))
// password.set(findProperty("ossrhPassword") ?: System.getenv("OSSRH_PASSWORD"))
// nexusUrl.set(uri("https://ossrh-staging-api.central.sonatype.com/service/local/"))
// snapshotRepositoryUrl.set(uri("https://central.sonatype.com/repository/maven-snapshots/"))
// }
// }
//}
subprojects {
// Equivalent Kotlin is: tasks.register<DependencyReportTask>("dependenciesAll") { ...
tasks.register("dependenciesAll", DependencyReportTask) {
group = HelpTasksPlugin.HELP_GROUP
description = "Displays all dependencies, including subprojects."
}
}
dependencies {
subprojects.findAll {
it.name.startsWith("orx-") && !it.name.contains("-catalog")
}.each { subproject ->
dokka(project(subproject.path))
}
}
class SleepTask extends DefaultTask {
@TaskAction
void action() {
sleep(60 * 5 * 1000)
}
}
tasks.register("sleep", SleepTask)
gradle.buildFinished {
println("\n")
println("orx = \"${version}\"")
}