-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle.kts
114 lines (100 loc) · 3.45 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
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath("com.android.tools.build:gradle:7.1.2")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10")
classpath("de.mannodermaus.gradle.plugins:android-junit5:1.8.2.0")
}
}
plugins {
// Used for dependency update checking
id("com.github.ben-manes.versions") version "0.42.0"
// Native Kotlin Serialization
kotlin("plugin.serialization") version "1.6.10"
// static code analysis for Kotlin
id("io.gitlab.arturbosch.detekt").version("1.17.1")
// used for publishing into nexus repositories
id("io.github.gradle-nexus.publish-plugin") version "1.1.0"
}
allprojects {
repositories {
google()
mavenCentral()
}
}
detekt {
input = files(rootDir)
config = files("detekt.yml")
}
fun isUnstable(version: String): Boolean {
val hasUnstableKeywords = listOf("beta", "alpha", "rc").any {
version.toLowerCase().contains(it)
}
// Capture formats where {number} is repeated with {dot} in between
val regex = "^(?:[0-9]+\\.)+[0-9]+$".toRegex()
return hasUnstableKeywords || regex.matches(version).not()
}
tasks {
withType<Test> {
// For kotest Junit5 compatibility
useJUnitPlatform()
}
// Set dependency update task configuration to filter unstable updates.
// see https://github.com/ben-manes/gradle-versions-plugin for details
register("dependencyUpdated", DependencyUpdatesTask::class) {
checkConstraints = true
checkForGradleUpdate = true
rejectVersionIf {
// reject all unstable dependency versions
isUnstable(candidate.version)
}
}
}
val localProps = project.rootProject.file("local.properties")
val env: Map<String, String> = if (localProps.exists()) {
// Auto import all of local.properties file as project wide properties
val props = java.util.Properties()
java.io.FileInputStream(localProps).bufferedReader().use {
props.load(it)
}
mutableMapOf<String, String>().also { map ->
props.forEach { entry ->
map[entry.key.toString()] = entry.value.toString()
}
}
} else System.getenv()
fun ExtraPropertiesExtension.copy(key: String, map: Map<String, String>) {
set(key, map.getOrDefault(key, ""))
}
extra.apply {
copy("sonartypeStagingProfileId", env)
copy("ossrhUsername", env)
copy("ossrhPassword", env)
copy("signing.keyId", env)
copy("signing.password", env)
copy("signing.secretKeyRingFile", env)
copy("wakatimeRedirectScheme", env)
copy("wakatimeRedirectHost", env)
copy("wakatimeAppId", env)
copy("wakatimeAppSecret", env)
}
nexusPublishing {
repositories {
sonatype {
// Values previously read from local.properties
val sonartypeStagingProfileId: String by extra
val ossrhUsername: String by extra
val ossrhPassword: String by extra
stagingProfileId.set(sonartypeStagingProfileId)
username.set(ossrhUsername)
password.set(ossrhPassword)
// Different nexus url requirements for signups made post 24th of february
nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/"))
snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/"))
}
}
}