@@ -11,7 +11,6 @@ plugins {
1111 alias(libs.plugins.android.application)
1212 alias(libs.plugins.kotlinAndroid)
1313 alias(libs.plugins.kotlinParcelize)
14- alias(libs.plugins.kapt)
1514 alias(libs.plugins.ksp)
1615 alias(libs.plugins.protobuf)
1716 alias(libs.plugins.googleServices) apply false
@@ -77,8 +76,8 @@ fun gitHash(): String {
7776 return " git -C $rootDir rev-parse --short HEAD" .runCommand()
7877}
7978
80- val version = " 1.6.0-alpha.1"
81- val code = 125
79+ val appVersionName = " 1.6.0-alpha.1"
80+ val appVersionCode = 125
8281
8382android {
8483 compileSdk = 35
@@ -92,12 +91,16 @@ android {
9291 applicationId = " com.kelsos.mbrc"
9392 minSdk = 23
9493 targetSdk = 35
95- versionCode = code
96- versionName = version
94+ versionCode = appVersionCode
95+ versionName = appVersionName
9796 buildConfigField(" String" , " GIT_SHA" , " \" ${gitHash()} \" " )
9897 buildConfigField(" String" , " BUILD_TIME" , " \" ${buildTime()} \" " )
9998
10099 testInstrumentationRunner = " androidx.test.runner.AndroidJUnitRunner"
100+
101+ ksp {
102+ arg(" room.schemaLocation" , " $projectDir /schemas" )
103+ }
101104 }
102105
103106 testOptions {
@@ -191,6 +194,13 @@ android {
191194 }
192195}
193196
197+
198+ detekt {
199+ source.setFrom(files(" src/main/java" , " src/main/kotlin" ))
200+ config.setFrom(files(rootProject.file(" config/detekt/detekt.yml" )))
201+ buildUponDefaultConfig = true
202+ }
203+
194204val dummyGoogleServicesJson: Configuration by configurations.creating {
195205 isCanBeResolved = true
196206 isCanBeConsumed = false
@@ -205,18 +215,6 @@ dependencies {
205215
206216 implementation(projects.changelog)
207217
208- testImplementation(libs.androidx.arch.core.testing)
209- testImplementation(libs.androidx.test.core)
210- testImplementation(libs.androidx.test.runner)
211- testImplementation(libs.androidx.test.junit)
212- testImplementation(libs.androidx.test.truth)
213- testImplementation(libs.bundles.androidx.test.espresso)
214- testImplementation(libs.truth)
215- testImplementation(libs.koin.test)
216- testImplementation(libs.kotlin.coroutines.test)
217- testImplementation(libs.mockk)
218- testImplementation(libs.robolectric)
219-
220218 implementation(libs.androidx.annotation)
221219 implementation(libs.androidx.appcompat)
222220 implementation(libs.androidx.core.ktx)
@@ -229,27 +227,37 @@ dependencies {
229227 implementation(libs.androidx.recyclerview)
230228 implementation(libs.androidx.core.splashscreen)
231229 implementation(libs.androidx.viewpager2)
230+ implementation(libs.androidx.swiperefreshlayout)
232231 implementation(libs.bundles.androidx.lifecycle)
233- implementation(libs.androidx.legacy.support.v4)
234- implementation(libs.androidx.legacy.support.v13)
235232 implementation(libs.bundles.coroutines)
233+ implementation(libs.bundles.androidx.room)
236234 implementation(libs.bundles.coil)
237235 implementation(libs.bundles.koin)
238236 implementation(libs.google.material)
239237 implementation(libs.google.protobuf.javalite)
238+ implementation(libs.squareup.moshi.lib)
240239 implementation(libs.squareup.okio)
240+ implementation(libs.squareup.okhttp)
241241 implementation(libs.timber)
242242
243- implementation(libs.bundles.dbflow)
244- implementation(libs.bundles.jackson)
245- implementation(libs.kotlin.stdlib)
246- implementation(libs.kotlin.reflect)
247- implementation(libs.rxandroid)
248- implementation(libs.rxjava)
249- implementation(libs.rxkotlin)
250- implementation(libs.rxrelay)
243+ ksp(libs.androidx.room.compiler)
244+ ksp(libs.squareup.moshi.codegen)
251245
252- kapt(libs.dbflow.processor)
246+ testImplementation(libs.androidx.arch.core.testing)
247+ testImplementation(libs.androidx.room.testing)
248+ testImplementation(libs.androidx.test.core)
249+ testImplementation(libs.androidx.test.runner)
250+ testImplementation(libs.androidx.test.junit)
251+ testImplementation(libs.androidx.test.truth)
252+ testImplementation(libs.bundles.androidx.test.espresso)
253+ testImplementation(libs.androidx.paging.common.ktx)
254+ testImplementation(libs.androidx.paging.testing)
255+ testImplementation(libs.turbine)
256+ testImplementation(libs.truth)
257+ testImplementation(libs.koin.test)
258+ testImplementation(libs.kotlin.coroutines.test)
259+ testImplementation(libs.mockk)
260+ testImplementation(libs.robolectric)
253261
254262 debugImplementation(libs.squareup.leakcanary)
255263 debugImplementation(libs.androidx.fragment.testing)
@@ -336,7 +344,8 @@ tasks {
336344 }
337345 detekt.forEach {
338346 from(it.sarifReportFile) {
339- rename { " detekt.sarif" }
347+ val name = it.sarifReportFile.get().asFile.nameWithoutExtension.prefixIfNot(" detekt" ).toKebabCase()
348+ rename { " $name .sarif" }
340349 }
341350 }
342351 from(lintReportReleaseSarifOutput) {
@@ -365,7 +374,8 @@ tasks {
365374 doLast {
366375 if (! project.file(" google-services.json" ).exists()) {
367376 throw GradleException (
368- " You need a google-services.json file to run this project. Please refer to the CONTRIBUTING.md file for details."
377+ " You need a google-services.json file to run this project." +
378+ " Please refer to the CONTRIBUTING.md file for details."
369379 )
370380 }
371381 }
@@ -379,16 +389,23 @@ tasks {
379389 }
380390}
381391
382- kotlin {
383- sourceSets.all {
384- languageSettings.enableLanguageFeature(" ExplicitBackingFields" )
385- }
386- }
387-
388392configurations.all {
389393 resolutionStrategy {
390394 force(" com.google.code.findbugs:jsr305:3.0.2" )
391395 force(" org.jetbrains.kotlin:kotlin-stdlib-jdk8:${project.libs.versions.kotlin.get()} " )
392396 force(" org.jetbrains.kotlin:kotlin-reflect:${project.libs.versions.kotlin.get()} " )
393397 }
394398}
399+
400+
401+ fun String.toKebabCase (): String {
402+ return this .trim()
403+ .replace(Regex (" ([a-z])([A-Z])" ), " $1-$2" )
404+ .replace(Regex (" [\\ s_]+" ), " -" )
405+ .replace(Regex (" [^a-zA-Z0-9-]" ), " " )
406+ .lowercase()
407+ }
408+
409+ fun String.prefixIfNot (prefix : String ): String {
410+ return if (this .startsWith(prefix)) this else " $prefix -$this "
411+ }
0 commit comments