-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle.kts
74 lines (60 loc) · 2.49 KB
/
build.gradle.kts
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
import org.gradle.api.tasks.wrapper.Wrapper.DistributionType.ALL
/*
* Main build script, responsible for:
*
* 1. Publishing: upload binaries and templates to Maven Central
* 2. Releasing: tag source code in GitHub
* 3. Coverage report: aggregated coverage report for all modules
* 4. Handle Docker containers: take care of tasks depending on Docker and containers clean up
*
* Plugins that are not used in the root project (this one) are only applied by the modules that use
* them.
*/
plugins {
kotlin("jvm") version(libs.versions.kotlin) apply(false)
id("idea")
id("eclipse")
id("org.jetbrains.dokka") version(libs.versions.dokka)
id("org.graalvm.buildtools.native") version(libs.versions.nativeTools) apply(false)
id("io.gitlab.arturbosch.detekt") version(libs.versions.detekt) apply(false)
}
ext.set("gradleScripts", "https://raw.githubusercontent.com/hexagontk/hexagon/$version/gradle")
defaultTasks("build")
repositories {
mavenCentral()
}
task("setUp") {
group = "build setup"
description = "Set up project for development. Creates the Git pre push hook (run build task)."
doLast {
exec { commandLine("docker version".split(" ")) }
val dotfiles = "https://raw.githubusercontent.com/hexagontk/.github/master"
exec { commandLine("curl $dotfiles/.gitignore -o .gitignore".split(" ")) }
exec { commandLine("curl $dotfiles/commit_template.txt -o .git/message".split(" ")) }
exec { commandLine("curl $dotfiles/.editorconfig -o .editorconfig".split(" ")) }
exec { commandLine("git config commit.template .git/message".split(" ")) }
val prePush = file(".git/hooks/pre-push")
prePush.writeText("""
#!/usr/bin/env sh
set -e
./gradlew clean build
""".trimIndent() + "\n")
prePush.setExecutable(true)
}
}
task("release") {
group = "publishing"
description = "Tag the source code with the version number after publishing all artifacts."
dependsOn(project.getTasksByName("publish", true))
doLast {
val release = version.toString()
val actor = System.getenv("GITHUB_ACTOR")
project.exec { commandLine = listOf("git", "config", "--global", "user.name", actor) }
project.exec { commandLine = listOf("git", "tag", "-m", "Release $release", release) }
project.exec { commandLine = listOf("git", "push", "--tags") }
}
}
tasks.wrapper {
gradleVersion = libs.versions.gradleWrapper.get()
distributionType = ALL
}