-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathbuild.gradle.kts
More file actions
102 lines (90 loc) · 3.48 KB
/
build.gradle.kts
File metadata and controls
102 lines (90 loc) · 3.48 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
import io.gitlab.arturbosch.detekt.Detekt
import java.util.Properties
plugins {
alias(libs.plugins.androidApplication).apply(false)
alias(libs.plugins.androidLibrary).apply(false)
alias(libs.plugins.kotlinAndroid).apply(false)
alias(libs.plugins.kotlinMultiplatform).apply(false)
alias(libs.plugins.compose.compiler).apply(false)
alias(libs.plugins.jetbrainsCompose).apply(false)
alias(libs.plugins.publish.plugin).apply(false)
alias(libs.plugins.detekt)
}
val detektFormatting = libs.detekt.formatting.get()
val detektRulesCompose = libs.detekt.rules.compose.get()
allprojects {
ext {
fun loadProperties(filePath: String): Properties {
val file = file("$rootDir/$filePath")
require(file.canRead()) { "Cannot read file: ${file.absolutePath}" }
return Properties().apply {
file.inputStream().use { load(it) }
}
}
val settingsProperties = loadProperties("settings.properties")
val versionProperties = loadProperties("version.properties")
val isRelease = settingsProperties["isRelease"]?.toString()?.toBooleanStrictOrNull()
?: error("Missing or invalid 'isRelease' in settings.properties")
val libraryVersionName = versionProperties["libraryVersionName"]?.toString()
?: error("Invalid version name in version.properties")
extra.apply {
set("isRelease", isRelease)
set("libraryVersionName", libraryVersionName)
}
}
apply(plugin = "io.gitlab.arturbosch.detekt")
val projectSource = file(projectDir)
val configFile = files("$rootDir/config/detekt/detekt.yml")
val baselineFile = file("$rootDir/config/detekt/baseline.xml")
val kotlinFiles = "**/*.kt"
val ignoredFiles = listOf("**/resources/**", "**/build/**")
fun configureDetektTask(taskName: String, autoFix: Boolean) {
tasks.register(taskName, Detekt::class) {
description = "Detekt analysis for all modules"
parallel = false
ignoreFailures = true
autoCorrect = autoFix
buildUponDefaultConfig = true
setSource(projectSource)
baseline.set(baselineFile)
config.setFrom(configFile)
include(kotlinFiles)
exclude(ignoredFiles)
reports {
html.required.set(false)
xml.required.set(true)
txt.required.set(false)
}
}
}
configureDetektTask("detektCheckAll", project.hasProperty("detektAutoFix"))
configureDetektTask("detektFixAll", true)
tasks.named("detektCheckAll").configure { mustRunAfter("detektFixAll") }
tasks.register("detektFixThenCheckAll") {
description = "Run detektFixAll then detektCheckAll"
dependsOn("detektFixAll", "detektCheckAll")
}
dependencies {
detektPlugins(detektFormatting)
detektPlugins(detektRulesCompose)
}
}
// Disable Lint analysis for AndroidTest variants to avoid flaky tool crashes
subprojects {
plugins.withId("com.android.library") {
tasks.configureEach {
val n = name
if (n.startsWith("lint") && n.contains("AndroidTest")) {
enabled = false
}
}
}
plugins.withId("com.android.application") {
tasks.configureEach {
val n = name
if (n.startsWith("lint") && n.contains("AndroidTest")) {
enabled = false
}
}
}
}