-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.gradle.kts
70 lines (60 loc) · 1.96 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
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("com.github.ben-manes.versions")
id("io.gitlab.arturbosch.detekt")
}
// Where to delete ./build dir upon clean task call
tasks.register("clean", Delete::class) {
delete(rootProject.buildDir)
delete("${rootProject.projectDir}/buildSrc/build")
}
// Detect project dependencies updates
// Terminal command: ./gradlew dependencyUpdates
// Report path: build/dependencyUpdates/report.txt
fun isNonStable(version: String): Boolean {
val stableKeyword = listOf("RELEASE", "FINAL", "GA").any { version.toUpperCase().contains(it) }
val regex = "^[0-9,.v-]+(-r)?$".toRegex()
val isStable = stableKeyword || regex.matches(version)
return isStable.not()
}
tasks.withType<com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask> {
rejectVersionIf {
isNonStable(candidate.version) && !isNonStable(currentVersion)
}
}
// Register gradle task to check all files with detekt: ./gradlew detektAll
tasks.register<io.gitlab.arturbosch.detekt.Detekt>("detektAll") {
parallel = true
setSource(projectDir)
include("**/*.kt", "**/*.kts")
exclude("**/resources/**", "**/build/**")
config.setFrom(project.file("config/detekt/detekt.yml"))
}
// Register task to run pre-commit detekt checks
task<Copy>("enableGitHooks") {
group = "git hooks"
from("${rootProject.rootDir}/hooks/")
include("*")
into("${rootProject.rootDir}/.git/hooks")
fileMode = 0b111101101 // make files executable
}
// Unregister task to run pre-commit detekt checks
task<Delete>("disableGitHooks") {
group = "git hooks"
delete = setOf(
fileTree("${rootProject.rootDir}/.git/hooks/") {
include("*")
}
)
}
tasks.withType<KotlinCompile> {
kotlinOptions.useK2 = true
}
dependencies {
detekt(libs.detekt.cli)
}
// Global project properties
val appVersion by extra("1.3")
val compileSdk by extra(33)
val minSdk by extra(21)
val targetSdk by extra(33)