Files
core-plugin/build.gradle.kts
2025-09-09 14:14:16 +02:00

121 lines
3.4 KiB
Kotlin

import io.gitlab.arturbosch.detekt.Detekt
import io.gitlab.arturbosch.detekt.extensions.DetektExtension.Companion.DEFAULT_SRC_DIR_KOTLIN
import io.gitlab.arturbosch.detekt.extensions.DetektExtension.Companion.DEFAULT_TEST_SRC_DIR_KOTLIN
import java.lang.System.getenv
import java.time.OffsetDateTime.now
import java.time.ZoneId.of
import java.time.format.DateTimeFormatter.ofPattern
import org.jlleitschuh.gradle.ktlint.reporter.ReporterType.SARIF
plugins {
alias(aa.plugins.gradle.detekt)
alias(aa.plugins.gradle.ktlint)
alias(aa.plugins.kotlin.jvm)
`kotlin-dsl`
`maven-publish`
}
dependencies {
implementation(aa.jgit)
testImplementation(aa.assertj)
testImplementation(aa.junit.jupiter.params)
testImplementation(aa.kotlin.junit5)
testImplementation(aa.mockk)
testRuntimeOnly(aa.junit.platform.launcher)
}
description = "Lulz Core Plugin"
group = "ltd.lulz.plugin"
detekt {
buildUponDefaultConfig = true
basePath = projectDir.path
source.from(DEFAULT_SRC_DIR_KOTLIN, DEFAULT_TEST_SRC_DIR_KOTLIN)
}
gradlePlugin.plugins.create("core-plugin") {
id = "ltd.lulz.plugin.core-plugin"
implementationClass = "ltd.lulz.plugin.CorePlugin"
}
java {
toolchain.languageVersion = JavaLanguageVersion.of(17)
withSourcesJar()
}
kotlin.compilerOptions.freeCompilerArgs.addAll("-Xjsr305=strict")
ktlint {
verbose = true
filter {
include("**/kotlin/**")
}
reporters {
reporter(SARIF)
}
}
publishing.repositories {
fun retrieveConfiguration(
property: String,
environment: String,
): String? = project.findProperty(property)?.toString() ?: getenv(environment)
maven {
url = uri("https://gitea.lulz.ltd/api/packages/aura-ascend/maven")
name = "GiteaPackages"
credentials {
username = retrieveConfiguration("repository.gitea.user", "REPOSITORY_USER")
password = retrieveConfiguration("repository.gitea.token", "REPOSITORY_TOKEN")
}
}
}
tasks {
named("build") {
dependsOn("buildInfo")
}
register("buildInfo") {
group = "lulz"
description = "Prints the project name and version"
val projectName = project.name
val projectVersion = project.version
doLast {
println("Project Name: $projectName Version: $projectVersion")
}
}
withType<Detekt> {
reports {
html.required = false
md.required = false
sarif.required = true
txt.required = false
xml.required = false
}
}
withType<Jar> {
manifest.attributes.apply {
put("Implementation-Title", project.name)
put("Implementation-Version", project.version)
put("Implementation-Vendor", "Lulz Ltd")
put("Built-By", System.getProperty("user.name"))
put("Built-Gradle", project.gradle.gradleVersion)
put("Built-JDK", System.getProperty("java.version"))
put("Built-OS", "${System.getProperty("os.name")} v${System.getProperty("os.version")}")
put(
"Built-Time",
now().atZoneSameInstant(of("UTC")).format(ofPattern("yyyy-MM-dd HH:mm:ss z")).toString(),
)
}
}
withType<Test> {
// Set TEST_ENV environment variable for test execution
environment["TEST_ENV"] = "lulz"
useJUnitPlatform()
}
}