-
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathbuild.gradle.kts
More file actions
125 lines (108 loc) · 3.8 KB
/
build.gradle.kts
File metadata and controls
125 lines (108 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
plugins {
kotlin("jvm") version "2.3.20"
kotlin("plugin.serialization") version "2.3.20"
application
}
group = "attractor"
fun gitVersion(): String {
fun cmd(vararg args: String): Pair<Int, String> = try {
val proc = ProcessBuilder(*args)
.directory(rootDir)
.redirectErrorStream(true)
.start()
val out = proc.inputStream.bufferedReader().readText().trim()
proc.waitFor() to out
} catch (_: Exception) { -1 to "" }
fun isDirty(): Boolean = cmd("git", "status", "--porcelain").second.isNotEmpty()
val (tagExit, tagOut) = cmd("git", "tag", "--points-at", "HEAD", "--sort=-version:refname")
if (tagExit == 0 && tagOut.isNotEmpty()) {
val tag = tagOut.lines().first()
return if (isDirty()) "$tag-dirty" else tag
}
val sha = cmd("git", "rev-parse", "--short", "HEAD").second.ifEmpty { "unknown" }
return if (isDirty()) "$sha-dirty" else sha
}
version = gitVersion()
repositories {
mavenCentral()
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.10.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")
implementation("com.squareup.okhttp3:okhttp:5.3.2")
implementation("org.xerial:sqlite-jdbc:3.51.3.0")
runtimeOnly("com.mysql:mysql-connector-j:9.6.0")
runtimeOnly("org.postgresql:postgresql:42.7.10")
testImplementation("org.junit.jupiter:junit-jupiter:6.0.3")
testImplementation("com.h2database:h2:2.4.240")
testImplementation("io.kotest:kotest-runner-junit5:6.1.9")
testImplementation("io.kotest:kotest-assertions-core:6.1.9")
testImplementation(kotlin("test"))
}
kotlin { jvmToolchain(25) }
application {
mainClass.set("attractor.MainKt")
}
tasks.test {
useJUnitPlatform()
testLogging {
events("passed", "skipped", "failed")
showStandardStreams = false
}
}
distributions {
main {
contents {
from("README.md")
from("LICENSE")
from("docs/api") { into("docs/api") }
from("examples") { into("examples") }
}
}
}
tasks.named("assemble") {
dependsOn("cliJar")
}
tasks.jar {
archiveBaseName.set("attractor-server-devel")
archiveVersion.set("")
manifest {
attributes["Main-Class"] = "attractor.MainKt"
attributes["Implementation-Version"] = version
}
from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.register<Jar>("cliJar") {
archiveBaseName.set("attractor-cli-devel")
archiveVersion.set("")
manifest {
attributes["Main-Class"] = "attractor.cli.CliMainKt"
attributes["Implementation-Version"] = version
}
from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
from(sourceSets.main.get().output)
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.register<Jar>("releaseJar") {
archiveBaseName.set("attractor-server")
archiveVersion.set(version.toString())
manifest {
attributes["Main-Class"] = "attractor.MainKt"
attributes["Implementation-Version"] = version
}
from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
from(sourceSets.main.get().output)
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.register<Jar>("releaseCliJar") {
archiveBaseName.set("attractor-cli")
archiveVersion.set(version.toString())
manifest {
attributes["Main-Class"] = "attractor.cli.CliMainKt"
attributes["Implementation-Version"] = version
}
from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
from(sourceSets.main.get().output)
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}