-
-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathbuild.gradle.kts
More file actions
115 lines (93 loc) · 2.86 KB
/
build.gradle.kts
File metadata and controls
115 lines (93 loc) · 2.86 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
import java.util.Properties
plugins {
java
application
id("com.gradleup.shadow") version "8.3.6"
}
apply {
plugin(jlink.JlinkPlugin::class)
}
group = "org.glavo"
version = System.getenv("GITHUB_SHA")?.lowercase()?.substring(0, 7).let { shortSha ->
if (shortSha != null) {
shortSha
} else {
val versionBase = property("viewer.version") as String
if (findProperty("viewer.version.snapshot") == "false") {
versionBase
} else {
"$versionBase-SNAPSHOT"
}
}
}
val viewerModuleName = "org.glavo.viewer"
val viewerMainClassName = "org.glavo.viewer.Main"
repositories {
mavenCentral()
}
dependencies {
compileOnly("org.jetbrains:annotations:26.0.2")
implementation("org.glavo.kala:kala-base:0.82.0")
}
application {
mainClass.set(viewerMainClassName)
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
tasks.compileJava {
options.encoding = "UTF-8"
options.javaModuleMainClass.set(viewerMainClassName)
}
tasks.withType<Jar> {
manifest.attributes(
"Main-Class" to viewerMainClassName
)
}
val convertSVG by tasks.registering(svg.ConvertSVGTask::class) {
inputDirectory.set(layout.projectDirectory.dir("src/main/svg"))
outputDirectory.set(layout.buildDirectory.dir("generated/images"))
}
val downloadFont by tasks.registering(de.undercouch.gradle.tasks.download.Download::class) {
src("https://github.com/JetBrains/JetBrainsMono/releases/download/v2.304/JetBrainsMono-2.304.zip")
dest(layout.buildDirectory.dir("download"))
overwrite(false)
}
val metadataFile = layout.buildDirectory.file("generated/metadata.properties")
val createMetadata by tasks.registering {
val properties = mapOf(
"viewer.version" to project.version.toString(),
)
inputs.properties(properties)
outputs.file(metadataFile)
doLast {
val file = metadataFile.get().asFile
file.parentFile.mkdirs()
file.delete()
file.writer().use { writer ->
val p = Properties()
properties.forEach { (k, v) -> p.setProperty(k, v) }
p.store(writer, null)
}
}
}
tasks.processResources {
dependsOn(convertSVG, downloadFont, createMetadata)
from(convertSVG.map { it.outputDirectory })
from(downloadFont.map { zipTree(it.outputFiles[0]) }) {
include("**/JetBrainsMonoNL-Regular.ttf")
includeEmptyDirs = false
eachFile(object : Action<FileCopyDetails> {
override fun execute(details: FileCopyDetails) {
details.relativePath = RelativePath(
true,
*"org/glavo/viewer/resources/fonts/monospaced.ttf".split('/').toTypedArray()
)
}
})
}
into("org/glavo/viewer/resources/") {
from(metadataFile)
}
}