From 12471bdd66148c7d8c11ac7bd29f5d38849b678f Mon Sep 17 00:00:00 2001 From: Ryan Conway Date: Fri, 10 Jan 2025 14:31:41 +0700 Subject: [PATCH 1/5] [#586] Migrate sample-compose to use gradle version catalog --- sample-compose/app/build.gradle.kts | 84 +++++------ sample-compose/build.gradle.kts | 33 +---- .../buildSrc/src/main/java/Configurations.kt | 5 - .../buildSrc/src/main/java/Versions.kt | 52 ------- sample-compose/data/build.gradle.kts | 59 ++++---- sample-compose/domain/build.gradle.kts | 21 +-- sample-compose/gradle/libs.versions.toml | 140 ++++++++++++++++++ .../gradle/wrapper/gradle-wrapper.properties | 2 +- sample-compose/settings.gradle.kts | 18 +++ 9 files changed, 238 insertions(+), 176 deletions(-) delete mode 100644 sample-compose/buildSrc/src/main/java/Versions.kt create mode 100644 sample-compose/gradle/libs.versions.toml diff --git a/sample-compose/app/build.gradle.kts b/sample-compose/app/build.gradle.kts index 38739b5d8..fcd9b3c92 100644 --- a/sample-compose/app/build.gradle.kts +++ b/sample-compose/app/build.gradle.kts @@ -30,13 +30,14 @@ android { } } - compileSdk = Versions.ANDROID_COMPILE_SDK_VERSION + namespace = "co.nimblehq.sample.compose" + compileSdk = libs.versions.androidCompileSdk.get().toInt() defaultConfig { applicationId = "co.nimblehq.sample.compose" - minSdk = Versions.ANDROID_MIN_SDK_VERSION - targetSdk = Versions.ANDROID_TARGET_SDK_VERSION - versionCode = Versions.ANDROID_VERSION_CODE - versionName = Versions.ANDROID_VERSION_NAME + minSdk = libs.versions.androidMinSdk.get().toInt() + targetSdk = libs.versions.androidTargetSdk.get().toInt() + versionCode = libs.versions.androidVersionCode.get().toInt() + versionName = libs.versions.androidVersionName.get() testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -72,20 +73,22 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = JavaVersion.VERSION_11.toString() + jvmTarget = JavaVersion.VERSION_17.toString() } composeOptions { - kotlinCompilerExtensionVersion = Versions.COMPOSE_COMPILER_VERSION + // TODO Remove this block in https://github.com/nimblehq/android-templates/issues/587 + kotlinCompilerExtensionVersion = "1.5.3" } buildFeatures { compose = true + buildConfig = true } packagingOptions { @@ -116,60 +119,49 @@ kapt { } dependencies { - implementation(project(Module.DATA)) - implementation(project(Module.DOMAIN)) + implementation(projects.data) + implementation(projects.domain) implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) - implementation("androidx.core:core-ktx:${Versions.ANDROIDX_CORE_KTX_VERSION}") - implementation("androidx.lifecycle:lifecycle-runtime-ktx:${Versions.ANDROIDX_LIFECYCLE_VERSION}") - implementation("androidx.lifecycle:lifecycle-runtime-compose:${Versions.ANDROIDX_LIFECYCLE_VERSION}") + implementation(libs.bundles.androidx) - implementation(platform("androidx.compose:compose-bom:${Versions.COMPOSE_BOM_VERSION}")) - implementation("androidx.compose.ui:ui") - implementation("androidx.compose.ui:ui-tooling") - implementation("androidx.compose.foundation:foundation") - implementation("androidx.compose.material:material") + implementation(platform(libs.compose.bom)) + implementation(libs.bundles.compose) - implementation("androidx.navigation:navigation-compose:${Versions.COMPOSE_NAVIGATION_VERSION}") - implementation("com.google.accompanist:accompanist-permissions:${Versions.ACCOMPANIST_VERSION}") - implementation("com.google.accompanist:accompanist-systemuicontroller:${Versions.ACCOMPANIST_VERSION}") + implementation(libs.accompanist.permissions) + implementation(libs.accompanist.systemUiController) - implementation("androidx.datastore:datastore-preferences:${Versions.ANDROIDX_DATASTORE_PREFERENCES_VERSION}") + implementation(libs.androidx.datastore.preferences) - implementation("com.google.dagger:hilt-android:${Versions.HILT_VERSION}") - implementation("androidx.hilt:hilt-navigation-compose:${Versions.HILT_NAVIGATION_COMPOSE_VERSION}") + implementation(libs.bundles.hilt) + kapt(libs.hilt.compiler) - implementation("com.jakewharton.timber:timber:${Versions.TIMBER_LOG_VERSION}") + implementation(libs.timber) - implementation("com.github.nimblehq:android-common-ktx:${Versions.ANDROID_COMMON_KTX_VERSION}") + implementation(libs.nimble.common) - implementation("org.jetbrains.kotlin:kotlin-stdlib:${Versions.KOTLIN_VERSION}") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.KOTLINX_COROUTINES_VERSION}") + implementation(libs.kotlin.stdlib) + implementation(libs.kotlinx.coroutines.core) - kapt("com.google.dagger:hilt-compiler:${Versions.HILT_VERSION}") - - debugImplementation("com.github.chuckerteam.chucker:library:${Versions.CHUCKER_VERSION}") - releaseImplementation("com.github.chuckerteam.chucker:library-no-op:${Versions.CHUCKER_VERSION}") + debugImplementation(libs.chucker) + releaseImplementation(libs.chucker.noOp) // Unit test - testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:${Versions.KOTLINX_COROUTINES_VERSION}") - testImplementation("io.kotest:kotest-assertions-core:${Versions.TEST_KOTEST_VERSION}") - testImplementation("junit:junit:${Versions.TEST_JUNIT_VERSION}") - testImplementation("io.mockk:mockk:${Versions.TEST_MOCKK_VERSION}") - testImplementation("app.cash.turbine:turbine:${Versions.TEST_TURBINE_VERSION}") + testImplementation(libs.bundles.unitTest) + testImplementation(libs.test.turbine) // UI test with Robolectric - testImplementation(platform("androidx.compose:compose-bom:${Versions.COMPOSE_BOM_VERSION}")) - testImplementation("androidx.compose.ui:ui-test-junit4") - testImplementation("androidx.test:rules:${Versions.TEST_RULES_VERSION}") - testImplementation("org.robolectric:robolectric:${Versions.TEST_ROBOLECTRIC_VERSION}") + testImplementation(platform(libs.compose.bom)) + testImplementation(libs.test.compose.ui) + testImplementation(libs.test.rules) + testImplementation(libs.test.robolectric) // UI test - androidTestImplementation(platform("androidx.compose:compose-bom:${Versions.COMPOSE_BOM_VERSION}")) - androidTestImplementation("androidx.compose.ui:ui-test-junit4") - androidTestImplementation("androidx.test:rules:${Versions.TEST_RULES_VERSION}") - androidTestImplementation("io.mockk:mockk-android:${Versions.TEST_MOCKK_VERSION}") + androidTestImplementation(platform(libs.compose.bom)) + androidTestImplementation(libs.test.compose.ui) + androidTestImplementation(libs.test.rules) + androidTestImplementation(libs.test.mockk) } /* diff --git a/sample-compose/build.gradle.kts b/sample-compose/build.gradle.kts index 948b8878c..91c9dc700 100644 --- a/sample-compose/build.gradle.kts +++ b/sample-compose/build.gradle.kts @@ -1,28 +1,11 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. -buildscript { - repositories { - google() - mavenCentral() - } - - dependencies { - classpath("com.android.tools.build:gradle:${Versions.BUILD_GRADLE_VERSION}") - classpath("com.google.dagger:hilt-android-gradle-plugin:${Versions.HILT_VERSION}") - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.KOTLIN_VERSION}") - } -} - plugins { - id("io.gitlab.arturbosch.detekt").version(Versions.DETEKT_VERSION) - id("org.jetbrains.kotlinx.kover").version(Versions.KOVER_VERSION) -} - -allprojects { - repositories { - google() - mavenCentral() - maven { url = uri("https://www.jitpack.io") } - } + alias(libs.plugins.android.library) apply false + alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.jvm) apply false + alias(libs.plugins.hilt) apply false + alias(libs.plugins.detekt) + alias(libs.plugins.kover) } tasks.register("clean", Delete::class) { @@ -31,7 +14,7 @@ tasks.register("clean", Delete::class) { tasks.withType().configureEach { // Target version of the generated JVM bytecode. It is used for type resolution. - jvmTarget = JavaVersion.VERSION_11.toString() + jvmTarget = JavaVersion.VERSION_17.toString() reports { xml { outputLocation.set(file("build/reports/detekt/detekt.xml")) @@ -43,7 +26,7 @@ tasks.withType().configureEach { } detekt { - toolVersion = Versions.DETEKT_VERSION + toolVersion = libs.versions.detekt.get() source = files( "app/src/main/java", diff --git a/sample-compose/buildSrc/src/main/java/Configurations.kt b/sample-compose/buildSrc/src/main/java/Configurations.kt index 175d0c1ba..8f3ab68e6 100644 --- a/sample-compose/buildSrc/src/main/java/Configurations.kt +++ b/sample-compose/buildSrc/src/main/java/Configurations.kt @@ -8,8 +8,3 @@ object BuildType { const val DEBUG = "debug" const val RELEASE = "release" } - -object Module { - const val DATA = ":data" - const val DOMAIN = ":domain" -} diff --git a/sample-compose/buildSrc/src/main/java/Versions.kt b/sample-compose/buildSrc/src/main/java/Versions.kt deleted file mode 100644 index 7c156ab71..000000000 --- a/sample-compose/buildSrc/src/main/java/Versions.kt +++ /dev/null @@ -1,52 +0,0 @@ -object Versions { - const val BUILD_GRADLE_VERSION = "7.4.2" - - const val ANDROID_COMPILE_SDK_VERSION = 33 - const val ANDROID_MIN_SDK_VERSION = 24 - const val ANDROID_TARGET_SDK_VERSION = 33 - - const val ANDROID_VERSION_CODE = 1 - const val ANDROID_VERSION_NAME = "3.31.0" - - // Dependencies (Alphabet sorted) - const val ACCOMPANIST_VERSION = "0.30.1" - const val ANDROID_COMMON_KTX_VERSION = "0.1.1" - const val ANDROID_CRYPTO_VERSION = "1.0.0" - const val ANDROIDX_CORE_KTX_VERSION = "1.10.1" - const val ANDROIDX_DATASTORE_PREFERENCES_VERSION = "1.0.0" - const val ANDROIDX_LIFECYCLE_VERSION = "2.6.1" - - const val CHUCKER_VERSION = "3.5.2" - const val COMPOSE_BOM_VERSION = "2023.04.01" - const val COMPOSE_COMPILER_VERSION = "1.4.7" - const val COMPOSE_NAVIGATION_VERSION = "2.5.3" - - const val HILT_VERSION = "2.44" - const val HILT_NAVIGATION_COMPOSE_VERSION = "1.0.0" - - const val JAVAX_INJECT_VERSION = "1" - - const val KOTLIN_VERSION = "1.8.21" - const val KOTLINX_COROUTINES_VERSION = "1.7.1" - const val KOVER_VERSION = "0.7.3" - - const val MOSHI_VERSION = "1.12.0" - - const val OKHTTP_VERSION = "4.9.1" - - const val RETROFIT_VERSION = "2.9.0" - - const val TIMBER_LOG_VERSION = "4.7.1" - - // Configuration - const val DETEKT_VERSION = "1.21.0" - - // Testing libraries - const val TEST_ANDROIDX_CORE_VERSION = "1.4.0" - const val TEST_JUNIT_VERSION = "4.13.2" - const val TEST_KOTEST_VERSION = "5.6.2" - const val TEST_MOCKK_VERSION = "1.13.5" - const val TEST_ROBOLECTRIC_VERSION = "4.10.2" - const val TEST_RULES_VERSION = "1.5.0" - const val TEST_TURBINE_VERSION = "0.13.0" -} diff --git a/sample-compose/data/build.gradle.kts b/sample-compose/data/build.gradle.kts index 1ef1f1921..0b6642795 100644 --- a/sample-compose/data/build.gradle.kts +++ b/sample-compose/data/build.gradle.kts @@ -1,15 +1,14 @@ plugins { - id("com.android.library") - id("kotlin-android") - - id("org.jetbrains.kotlinx.kover") + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kover) } android { - compileSdk = Versions.ANDROID_COMPILE_SDK_VERSION + namespace = "co.nimblehq.sample.compose.data" + compileSdk = libs.versions.androidCompileSdk.get().toInt() defaultConfig { - minSdk = Versions.ANDROID_MIN_SDK_VERSION - targetSdk = Versions.ANDROID_TARGET_SDK_VERSION + minSdk = libs.versions.androidMinSdk.get().toInt() consumerProguardFiles("consumer-rules.pro") } @@ -28,12 +27,12 @@ android { } compileOptions { - targetCompatibility = JavaVersion.VERSION_11 - sourceCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = JavaVersion.VERSION_11.toString() + jvmTarget = JavaVersion.VERSION_17.toString() } lintOptions { @@ -44,33 +43,25 @@ android { } dependencies { - implementation(project(Module.DOMAIN)) - - implementation("androidx.core:core-ktx:${Versions.ANDROIDX_CORE_KTX_VERSION}") - implementation("androidx.datastore:datastore-preferences:${Versions.ANDROIDX_DATASTORE_PREFERENCES_VERSION}") - implementation("androidx.security:security-crypto:${Versions.ANDROID_CRYPTO_VERSION}") - implementation("com.google.dagger:hilt-android:${Versions.HILT_VERSION}") - implementation("com.squareup.moshi:moshi:${Versions.MOSHI_VERSION}") - implementation("org.jetbrains.kotlin:kotlin-stdlib:${Versions.KOTLIN_VERSION}") - implementation("javax.inject:javax.inject:${Versions.JAVAX_INJECT_VERSION}") - - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.KOTLINX_COROUTINES_VERSION}") + implementation(projects.domain) - api("com.squareup.retrofit2:converter-moshi:${Versions.RETROFIT_VERSION}") - api("com.squareup.retrofit2:retrofit:${Versions.RETROFIT_VERSION}") + implementation(libs.androidx.core) + implementation(libs.androidx.datastore.preferences) + implementation(libs.androidx.security.crypto) + implementation(libs.hilt.android) + implementation(libs.kotlin.stdlib) + implementation(libs.javax.inject) - api("com.squareup.moshi:moshi-adapters:${Versions.MOSHI_VERSION}") - api("com.squareup.moshi:moshi-kotlin:${Versions.MOSHI_VERSION}") + implementation(libs.kotlinx.coroutines.core) - api("com.squareup.okhttp3:okhttp:${Versions.OKHTTP_VERSION}") - api("com.squareup.okhttp3:logging-interceptor:${Versions.OKHTTP_VERSION}") + api(libs.bundles.retrofit) + api(libs.bundles.okhttp) + api(libs.bundles.moshi) + implementation(libs.moshi) // Testing - testImplementation("junit:junit:${Versions.TEST_JUNIT_VERSION}") - testImplementation("io.mockk:mockk:${Versions.TEST_MOCKK_VERSION}") - testImplementation("io.kotest:kotest-assertions-core:${Versions.TEST_KOTEST_VERSION}") - testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:${Versions.KOTLINX_COROUTINES_VERSION}") - testImplementation("androidx.test:core:${Versions.TEST_ANDROIDX_CORE_VERSION}") - testImplementation("org.robolectric:robolectric:${Versions.TEST_ROBOLECTRIC_VERSION}") - testImplementation("app.cash.turbine:turbine:${Versions.TEST_TURBINE_VERSION}") + testImplementation(libs.bundles.unitTest) + testImplementation(libs.test.core.ktx) + testImplementation(libs.test.robolectric) + testImplementation(libs.test.turbine) } diff --git a/sample-compose/domain/build.gradle.kts b/sample-compose/domain/build.gradle.kts index dfbddbbb5..4206bdce5 100644 --- a/sample-compose/domain/build.gradle.kts +++ b/sample-compose/domain/build.gradle.kts @@ -1,22 +1,17 @@ plugins { - id("java-library") - id("kotlin") - - id("org.jetbrains.kotlinx.kover") + id(libs.plugins.javaLibrary.get().pluginId) + alias(libs.plugins.kotlin.jvm) + alias(libs.plugins.kover) } java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } dependencies { - implementation("javax.inject:javax.inject:${Versions.JAVAX_INJECT_VERSION}") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.KOTLINX_COROUTINES_VERSION}") + implementation(libs.kotlinx.coroutines.core) + implementation(libs.javax.inject) - // Testing - testImplementation("junit:junit:${Versions.TEST_JUNIT_VERSION}") - testImplementation("io.mockk:mockk:${Versions.TEST_MOCKK_VERSION}") - testImplementation("io.kotest:kotest-assertions-core:${Versions.TEST_KOTEST_VERSION}") - testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:${Versions.KOTLINX_COROUTINES_VERSION}") + testImplementation(libs.bundles.unitTest) } diff --git a/sample-compose/gradle/libs.versions.toml b/sample-compose/gradle/libs.versions.toml new file mode 100644 index 000000000..e11c3f239 --- /dev/null +++ b/sample-compose/gradle/libs.versions.toml @@ -0,0 +1,140 @@ +[versions] +androidCompileSdk = "34" +androidMinSdk = "24" +androidTargetSdk = "34" +androidVersionCode = "1" +androidVersionName = "1.0.0" + +accompanist = "0.30.1" +chucker = "3.5.2" +composeBom = "2023.09.02" +composeNavigation = "2.5.3" +core = "1.10.1" +datastore = "1.0.0" +detekt = "1.21.0" +gradle = "8.1.2" +hilt = "2.48" +hiltNavigation = "1.0.0" +javaxInject = "1" +junit = "4.13.2" +kotest = "5.6.2" +kotlin = "1.9.10" +kotlinxCoroutines = "1.7.1" +kover = "0.7.3" +lifecycle = "2.6.1" +mockk = "1.13.5" +moshi = "1.12.0" +nimbleCommon = "0.1.1" +okhttp = "4.11.0" +retrofit = "2.9.0" +robolectric = "4.10.2" +security = "1.0.0" +testCore = "1.6.1" +testRules = "1.5.0" +timber = "4.7.1" +turbine = "0.13.0" + +[libraries] +# AndroidX +androidx-core = { group = "androidx.core", name = "core-ktx", version.ref = "core" } +androidx-lifecycle-runtime = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycle" } +androidx-lifecycle-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycle" } +androidx-datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "datastore" } +androidx-security-crypto = { group = "androidx.security", name = "security-crypto", version.ref = "security" } + +# Compose +compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } +compose-ui = { group = "androidx.compose.ui", name = "ui" } +compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +compose-foundation = { group = "androidx.compose.foundation", name = "foundation" } +compose-material = { group = "androidx.compose.material", name = "material" } +compose-navigation = { group = "androidx.navigation", name = "navigation-compose", version.ref = "composeNavigation" } +accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanist" } +accompanist-systemUiController = { group = "com.google.accompanist", name = "accompanist-systemuicontroller", version.ref = "accompanist" } + +# Hilt +hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" } +hilt-navigation = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "hiltNavigation" } +hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" } +javax-inject = { group = "javax.inject", name = "javax.inject", version.ref = "javaxInject" } + +# Kotlin +kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" } +kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" } + +# Log +timber = { group = "com.jakewharton.timber", name = "timber", version.ref = "timber" } +chucker = { group = "com.github.chuckerteam.chucker", name = "library", version.ref = "chucker" } +chucker-noOp = { group = "com.github.chuckerteam.chucker", name = "library-no-op", version.ref = "chucker" } + +# Network +moshi = { group = "com.squareup.moshi", name = "moshi", version.ref = "moshi" } +moshi-adapters = { group = "com.squareup.moshi", name = "moshi-adapters", version.ref = "moshi" } +moshi-kotlin = { group = "com.squareup.moshi", name = "moshi-kotlin", version.ref = "moshi" } +okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" } +okhttp-logging = { group = "com.squareup.okhttp3", name = "logging-interceptor", version.ref = "okhttp" } +retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" } +retrofit-moshi = { group = "com.squareup.retrofit2", name = "converter-moshi", version.ref = "retrofit" } + +# Util +nimble-common = { group = "com.github.nimblehq", name = "android-common-ktx", version.ref = "nimbleCommon" } + +# Test +test-core-ktx = { group = "androidx.test", name = "core-ktx", version.ref = "testCore" } +test-junit = { group = "junit", name = "junit", version.ref = "junit" } +test-kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" } +test-kotest-assertions-core = { group = "io.kotest", name = "kotest-assertions-core", version.ref = "kotest" } +test-mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk" } +test-turbine = { group = "app.cash.turbine", name = "turbine", version.ref = "turbine" } +test-compose-ui = { group = "androidx.compose.ui", name = "ui-test-junit4" } +test-robolectric = { group = "org.robolectric", name = "robolectric", version.ref = "robolectric" } +test-rules = { group = "androidx.test", name = "rules", version.ref = "testRules" } + +[bundles] +androidx = [ + "androidx-core", + "androidx-lifecycle-runtime", + "androidx-lifecycle-compose", +] +compose = [ + "compose-ui", + "compose-ui-tooling-preview", + "compose-foundation", + "compose-material", + "compose-navigation", +] +hilt = [ + "hilt-android", + "hilt-navigation", +] +retrofit = [ + "retrofit", + "retrofit-moshi", +] +okhttp = [ + "okhttp", + "okhttp-logging", +] +moshi = [ + "moshi-adapters", + "moshi-kotlin", +] +unitTest = [ + "test-kotlinx-coroutines-test", + "test-junit", + "test-kotest-assertions-core", + "test-mockk", +] +uiTest = [ + "test-compose-ui", + "test-robolectric", +] + +[plugins] +android-library = { id = "com.android.library", version.ref = "gradle" } +detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } +hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } +javaLibrary = { id = "java-library" } +kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } diff --git a/sample-compose/gradle/wrapper/gradle-wrapper.properties b/sample-compose/gradle/wrapper/gradle-wrapper.properties index 721770ea0..ebd0bbe89 100644 --- a/sample-compose/gradle/wrapper/gradle-wrapper.properties +++ b/sample-compose/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Wed Jun 28 08:46:12 ICT 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/sample-compose/settings.gradle.kts b/sample-compose/settings.gradle.kts index d2f183fcb..c72789a66 100644 --- a/sample-compose/settings.gradle.kts +++ b/sample-compose/settings.gradle.kts @@ -1 +1,19 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + maven { url = uri("https://www.jitpack.io") } + } +} + +rootProject.name = "SampleCompose" +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") include(":app", ":data", ":domain") From c4297e058ce856b8304f5a614e60505b55822e83 Mon Sep 17 00:00:00 2001 From: Ryan Conway Date: Thu, 16 Jan 2025 16:00:00 +0700 Subject: [PATCH 2/5] [#586] Update workflows to reference version from version catalog --- .cicdtemplate/.github/workflows/bump_version.yml | 2 +- .cicdtemplate/.github/workflows/create_release_pull_request.yml | 2 +- .github/workflows/bump_version.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.cicdtemplate/.github/workflows/bump_version.yml b/.cicdtemplate/.github/workflows/bump_version.yml index 619374e55..33b4bc94e 100644 --- a/.cicdtemplate/.github/workflows/bump_version.yml +++ b/.cicdtemplate/.github/workflows/bump_version.yml @@ -22,7 +22,7 @@ jobs: - name: Bump version name run: | - perl -i -pe 's/ANDROID_VERSION_NAME =(.*)$/ANDROID_VERSION_NAME = "${{ github.event.inputs.newVersion }}"/g' buildSrc/src/main/java/Versions.kt + perl -i -pe 's/androidVersionName =(.*)$/androidVersionName = "${{ github.event.inputs.newVersion }}"/g' gradle/libs.versions.toml - name: Create pull request uses: peter-evans/create-pull-request@v4 diff --git a/.cicdtemplate/.github/workflows/create_release_pull_request.yml b/.cicdtemplate/.github/workflows/create_release_pull_request.yml index 91ea40fa2..277d416ee 100644 --- a/.cicdtemplate/.github/workflows/create_release_pull_request.yml +++ b/.cicdtemplate/.github/workflows/create_release_pull_request.yml @@ -16,7 +16,7 @@ jobs: - name: Read the current version id: version - run: echo "version=$(perl -nle 'print $1 if /ANDROID_VERSION_NAME = \"(.*)\"$/' buildSrc/src/main/java/Versions.kt)" >> $GITHUB_OUTPUT + run: echo "version=$(perl -nle 'print $1 if /androidVersionName = \"(.*)\"$/' gradle/libs.versions.toml)" >> $GITHUB_OUTPUT - uses: nimblehq/github-actions-workflows/create_release_pull_request@0.1.10 with: diff --git a/.github/workflows/bump_version.yml b/.github/workflows/bump_version.yml index 5c9ba0c12..a4ffcd636 100644 --- a/.github/workflows/bump_version.yml +++ b/.github/workflows/bump_version.yml @@ -26,7 +26,7 @@ jobs: - name: Bump version Compose run: | - perl -i -pe 's/ANDROID_VERSION_NAME =(.*)$/ANDROID_VERSION_NAME = "${{ github.event.inputs.newVersion }}"/g' sample-compose/buildSrc/src/main/java/Versions.kt + perl -i -pe 's/androidVersionName =(.*)$/androidVersionName = "${{ github.event.inputs.newVersion }}"/g' sample-compose/gradle/libs.versions.toml - name: Create pull request uses: peter-evans/create-pull-request@v4 From bb9837365654917400eb3159daeda420eccdc763 Mon Sep 17 00:00:00 2001 From: Ryan Conway Date: Thu, 16 Jan 2025 16:10:19 +0700 Subject: [PATCH 3/5] [#586] Migrate remaining plugins to version catalog --- sample-compose/app/build.gradle.kts | 19 ++++++++----------- sample-compose/build.gradle.kts | 3 +++ sample-compose/gradle/libs.versions.toml | 3 +++ 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/sample-compose/app/build.gradle.kts b/sample-compose/app/build.gradle.kts index fcd9b3c92..781d56dc2 100644 --- a/sample-compose/app/build.gradle.kts +++ b/sample-compose/app/build.gradle.kts @@ -1,13 +1,10 @@ plugins { - id("com.android.application") - - id("kotlin-android") - id("kotlin-kapt") - id("kotlin-parcelize") - - id("dagger.hilt.android.plugin") - - id("org.jetbrains.kotlinx.kover") + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.kotlin.parcelize) + alias(libs.plugins.hilt) + alias(libs.plugins.kover) } val keystoreProperties = rootDir.loadGradleProperties("signing.properties") @@ -168,8 +165,8 @@ dependencies { * Kover configs */ dependencies { - kover(project(":data")) - kover(project(":domain")) + kover(projects.data) + kover(projects.domain) } koverReport { diff --git a/sample-compose/build.gradle.kts b/sample-compose/build.gradle.kts index 91c9dc700..8f5b5c47a 100644 --- a/sample-compose/build.gradle.kts +++ b/sample-compose/build.gradle.kts @@ -1,8 +1,11 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { + alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.kotlin.jvm) apply false + alias(libs.plugins.kotlin.kapt) apply false + alias(libs.plugins.kotlin.parcelize) apply false alias(libs.plugins.hilt) apply false alias(libs.plugins.detekt) alias(libs.plugins.kover) diff --git a/sample-compose/gradle/libs.versions.toml b/sample-compose/gradle/libs.versions.toml index e11c3f239..80cb2e40d 100644 --- a/sample-compose/gradle/libs.versions.toml +++ b/sample-compose/gradle/libs.versions.toml @@ -131,6 +131,7 @@ uiTest = [ ] [plugins] +android-application = { id = "com.android.application", version.ref = "gradle" } android-library = { id = "com.android.library", version.ref = "gradle" } detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } @@ -138,3 +139,5 @@ javaLibrary = { id = "java-library" } kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } +kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } From fe32e37ec2c45ed610f5e693fcd2fe23bd3c77a4 Mon Sep 17 00:00:00 2001 From: Ryan Conway Date: Thu, 16 Jan 2025 16:11:38 +0700 Subject: [PATCH 4/5] [#586] Update sample-compose version --- sample-compose/gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sample-compose/gradle/libs.versions.toml b/sample-compose/gradle/libs.versions.toml index 80cb2e40d..9971fd554 100644 --- a/sample-compose/gradle/libs.versions.toml +++ b/sample-compose/gradle/libs.versions.toml @@ -3,7 +3,7 @@ androidCompileSdk = "34" androidMinSdk = "24" androidTargetSdk = "34" androidVersionCode = "1" -androidVersionName = "1.0.0" +androidVersionName = "3.31.0" accompanist = "0.30.1" chucker = "3.5.2" From fb7d65c372c9e1467867c8db1770ed20515517ee Mon Sep 17 00:00:00 2001 From: Ryan Conway Date: Thu, 16 Jan 2025 16:14:32 +0700 Subject: [PATCH 5/5] [#586] Add missing ui-tooling debug --- sample-compose/app/build.gradle.kts | 1 + sample-compose/gradle/libs.versions.toml | 1 + 2 files changed, 2 insertions(+) diff --git a/sample-compose/app/build.gradle.kts b/sample-compose/app/build.gradle.kts index 781d56dc2..58008d30f 100644 --- a/sample-compose/app/build.gradle.kts +++ b/sample-compose/app/build.gradle.kts @@ -125,6 +125,7 @@ dependencies { implementation(platform(libs.compose.bom)) implementation(libs.bundles.compose) + debugImplementation(libs.compose.ui.tooling) implementation(libs.accompanist.permissions) implementation(libs.accompanist.systemUiController) diff --git a/sample-compose/gradle/libs.versions.toml b/sample-compose/gradle/libs.versions.toml index 9971fd554..0e3c52794 100644 --- a/sample-compose/gradle/libs.versions.toml +++ b/sample-compose/gradle/libs.versions.toml @@ -45,6 +45,7 @@ androidx-security-crypto = { group = "androidx.security", name = "security-crypt # Compose compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } compose-ui = { group = "androidx.compose.ui", name = "ui" } +compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } compose-foundation = { group = "androidx.compose.foundation", name = "foundation" } compose-material = { group = "androidx.compose.material", name = "material" }