-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathbuild.gradle.kts
121 lines (104 loc) · 3.47 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
import java.time.LocalDate
import java.time.format.DateTimeFormatter
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.compose)
alias(libs.plugins.detekt)
}
android {
namespace = "com.nasdroid"
defaultConfig {
val workflowRun: Int? by project
applicationId = "com.nasdroid"
versionCode = workflowRun ?: 1
versionName = calculateVersionName()
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
signingConfigs {
register("release") {
val storeFilePath: String? by project
val storePass: String? by project
val key: String? by project
val keyPass: String? by project
this.storeFile = storeFilePath?.let { file(it) }
this.storePassword = storePass
this.keyAlias = key
this.keyPassword = keyPass
}
}
buildTypes {
release {
// Only apply release config in CI, otherwise we need to configure it when running release builds.
signingConfig = if (System.getenv("CI") == "true") {
signingConfigs.getByName("release")
} else {
signingConfigs.getByName("debug")
}
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
packaging {
resources {
excludes += listOf(
"/META-INF/{AL2.0,LGPL2.1}",
"META-INF/versions/9/previous-compilation-data.bin",
"META-INF/LICENSE.md",
"META-INF/LICENSE-notice.md"
)
}
}
lint {
sarifReport = true
htmlReport = false
checkDependencies = true
}
}
kotlin {
jvmToolchain(21)
}
detekt {
buildUponDefaultConfig = true
config.setFrom("$rootDir/config/detekt.yml")
basePath = rootDir.absolutePath
}
dependencies {
implementation(projects.core.api)
implementation(projects.core.design)
implementation(projects.core.navigation)
implementation(projects.features.apps.ui)
implementation(projects.features.auth.ui)
implementation(projects.features.dashboard.ui)
implementation(projects.features.power.ui)
implementation(projects.features.reporting.ui)
implementation(projects.features.storage.ui)
implementation(libs.androidx.lifecycle.runtime)
implementation(libs.koin.android)
implementation(libs.koin.android.startup)
// Compose
implementation(libs.androidx.navigation)
implementation(libs.bundles.compose)
implementation(libs.compose.material.icons.extended)
implementation(libs.compose.menuprovider)
implementation(libs.compose.material3.adaptive)
debugImplementation(libs.bundles.compose.tooling)
androidTestImplementation(libs.compose.ui.test.junit4)
testImplementation(libs.kotlin.test)
testImplementation(libs.kotlinx.coroutines.test)
testImplementation(libs.koin.test)
testImplementation(libs.mockk)
androidTestImplementation(libs.androidx.test.ext.junit)
}
/**
* Calculates an appropriate version name, based on [CalVer](https://calver.org/).
*/
fun calculateVersionName(): String {
val formatter = DateTimeFormatter.ofPattern("YYYY.w")
val nowDate = LocalDate.now()
return nowDate.format(formatter)
}