-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle.kts
126 lines (108 loc) · 3.29 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
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
126
@file:Suppress("UnstableApiUsage")
@Suppress("DSL_SCOPE_VIOLATION") plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.dagger.hilt.android) apply false
alias(libs.plugins.detekt)
alias(libs.plugins.ktlint)
alias(libs.plugins.benManesVersions)
alias(libs.plugins.versionCatalogUpdate)
alias(libs.plugins.dokka)
id("maven-publish")
}
buildscript {
dependencies {
classpath(libs.classpath.kotlinGradlePlugin)
classpath(libs.classpath.dokka.gradlePlugin)
classpath(libs.classpath.dokka.base)
classpath(libs.classpath.firebaseAppDistribution)
classpath(libs.classpath.googleServices)
classpath(libs.test.junit5.androidPlugin)
}
}
subprojects {
apply {
plugin(rootProject.libs.plugins.detekt.get().pluginId)
}
detekt {
config = files("${project.rootDir}/detekt.yml")
}
tasks.withType<Test>().configureEach {
useJUnitPlatform()
}
}
allprojects {
group = "io.snabble.pay"
project.extra.apply {
set(
"sdkVersion",
(System.getenv("SDK_VERSION_NAME")?.replace("v", "") ?: "dev") +
(project.properties["versionSuffix"] ?: "")
)
}
apply {
plugin(rootProject.libs.plugins.ktlint.get().pluginId)
}
ktlint {
version.set("0.48.2")
verbose.set(true)
outputToConsole.set(true)
coloredOutput.set(true)
reporters {
reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.HTML)
}
}
tasks.register("checkStyle") {
dependsOn("detekt")
dependsOn("ktlintCheck")
}
tasks.register("checkAll") {
dependsOn("checkStyle")
dependsOn(tasks.withType<Test>())
}
}
tasks.register("clean", Delete::class) {
delete(rootProject.buildDir)
}
versionCatalogUpdate {
sortByKey.set(false)
keep {
keepUnusedVersions.set(true)
}
}
fun isNonStable(version: String): Boolean {
val stableKeyword = listOf("RELEASE", "FINAL", "GA")
.any { version.toUpperCase().contains(it) }
val isNotStable = listOf("ALPHA", "BETA", "RC", "DEV")
.any { version.toUpperCase().contains(it) }
val regex = "^[0-9,.v-]+(-r)?$".toRegex()
val isStable = stableKeyword || regex.matches(version)
return isStable.not() && isNotStable
}
tasks.withType<com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask> {
resolutionStrategy {
componentSelection {
all {
if (isNonStable(candidate.version) && !isNonStable(currentVersion)) {
reject("Release candidate")
}
}
}
}
}
tasks.dokkaHtmlMultiModule {
outputDirectory.set(rootDir.toPath().resolve("docs").toFile())
suppressInheritedMembers.set(true)
includes.from("Module.md")
val escapedLogoPath = file("dokka/assets/logo-icon.svg").absolutePath.replace("\\\\", "\\\\\\\\")
pluginsMapConfiguration.set(
mapOf(
"org.jetbrains.dokka.base.DokkaBase" to """{
"footerMessage": "© ${java.time.Year.now()} snabble GmbH",
"customAssets": [
"$escapedLogoPath"
]
}"""
)
)
}