From 365c49950917a693947dbf6ed88e3aa3ed4fb48b Mon Sep 17 00:00:00 2001 From: Brayan Bedritchuk Date: Wed, 10 Dec 2025 09:32:54 -0300 Subject: [PATCH 1/3] Add Gradle plugins --- AGENTS.md | 2 +- app/build.gradle.kts | 150 ++---------- build-logic/build.gradle.kts | 15 ++ build-logic/settings.gradle.kts | 15 ++ .../todozy.android.application.gradle.kts | 120 ++++++++++ .../todozy.android.library.compose.gradle.kts | 19 ++ ...ozy.android.library.crashlytics.gradle.kts | 4 + .../kotlin/todozy.android.library.gradle.kts | 44 ++++ .../main/kotlin/todozy.jvm.library.gradle.kts | 17 ++ build.gradle.kts | 38 ++-- buildSrc/build.gradle.kts | 7 - buildSrc/src/main/java/Dependency.kt | 213 ------------------ buildSrc/src/main/java/Module.kt | 24 -- domain/build.gradle.kts | 14 +- feature/about/impl/build.gradle.kts | 78 ++----- feature/alarm/impl/build.gradle.kts | 86 +++---- feature/alarm/public/build.gradle.kts | 18 +- .../public-android/build.gradle.kts | 23 +- feature/settings/impl/build.gradle.kts | 86 +++---- .../settings/public-android/build.gradle.kts | 30 +-- feature/settings/public/build.gradle.kts | 12 +- feature/splash/impl/build.gradle.kts | 60 ++--- feature/task-details/impl/build.gradle.kts | 90 +++----- feature/task-details/public/build.gradle.kts | 18 +- feature/task-form/impl/build.gradle.kts | 90 +++----- feature/task-form/public/build.gradle.kts | 16 +- feature/task-history/impl/build.gradle.kts | 90 +++----- feature/task-history/public/build.gradle.kts | 16 +- feature/task-list/impl/build.gradle.kts | 108 ++++----- feature/task-list/public/build.gradle.kts | 16 +- gradle/libs.versions.toml | 18 +- platform/impl/build.gradle.kts | 55 ++--- settings.gradle.kts | 4 + ui-component/impl/build.gradle.kts | 70 ++---- ui-component/public/build.gradle.kts | 14 +- utility/android-util/build.gradle.kts | 48 +--- utility/kotlin-util/build.gradle.kts | 14 +- 37 files changed, 595 insertions(+), 1147 deletions(-) create mode 100644 build-logic/build.gradle.kts create mode 100644 build-logic/settings.gradle.kts create mode 100644 build-logic/src/main/kotlin/todozy.android.application.gradle.kts create mode 100644 build-logic/src/main/kotlin/todozy.android.library.compose.gradle.kts create mode 100644 build-logic/src/main/kotlin/todozy.android.library.crashlytics.gradle.kts create mode 100644 build-logic/src/main/kotlin/todozy.android.library.gradle.kts create mode 100644 build-logic/src/main/kotlin/todozy.jvm.library.gradle.kts delete mode 100644 buildSrc/build.gradle.kts delete mode 100644 buildSrc/src/main/java/Dependency.kt delete mode 100644 buildSrc/src/main/java/Module.kt diff --git a/AGENTS.md b/AGENTS.md index c1d3fa6f..d2542168 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,7 +4,7 @@ - Kotlin DSL multi-module Gradle. Entry point in `app/` with DI wiring. Core business rules in `domain/`; shared helpers live in `utility/kotlin-util` and Android extensions in `utility/android-util`. - UI kit split into `ui-component/public` (contracts) and `ui-component/impl` (views/resources). Features live under `feature//{public,impl}` (task-list, task-form, task-history, task-details, alarm, settings, about, splash, navigation) with data/domain/presentation layers. - Platform integrations (DB, logging, Crashlytics) sit in `platform/impl`. Resources stay per module; non-transitive R is on, so import the correct module `R`. -- Build constants and dependency aliases live in `buildSrc` (`BuildVersion`, `Dependency`, `Module`). Prefer those over hardcoded values. +- Dependency aliases and SDK versions live in `gradle/libs.versions.toml`. Prefer those over hardcoded values; shared Gradle wiring sits in `build-logic` convention plugins (`todozy.*`). ## Build, Test, and Development Commands - `./gradlew assembleDebug` — builds with AGP 8.10.1, Kotlin 1.9.22, Java 17, compileSdk 36/targetSdk 35/minSdk 24. diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5da9c4c9..e2eb6c48 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,133 +1,31 @@ -import java.util.Properties - plugins { - id("com.android.application") - id("com.google.firebase.crashlytics") - kotlin("android") - kotlin("kapt") -} - -val localProps = - Properties().apply { - val file = rootProject.file("local.properties") - if (file.exists()) { - file.inputStream().use { load(it) } - } - } - -val hasSigningProps = - listOf("STORE_FILE", "STORE_PASSWORD", "KEY_ALIAS", "KEY_PASSWORD") - .all { key -> localProps.getProperty(key).isNullOrBlank().not() } - -android { - signingConfigs { - if (hasSigningProps) { - create("config") { - keyAlias = localProps.getProperty("KEY_ALIAS") - keyPassword = localProps.getProperty("KEY_PASSWORD") - storeFile = file(localProps.getProperty("STORE_FILE")) - storePassword = localProps.getProperty("STORE_PASSWORD") - } - } - } - - compileSdk = BuildVersion.compileSdk - namespace = "br.com.sailboat.todozy" - - defaultConfig { - applicationId = "br.com.sailboat.todozy" - minSdk = BuildVersion.minSdk - targetSdk = BuildVersion.targetSdk - versionCode = BuildVersion.versionCode - versionName = BuildVersion.versionName - vectorDrawables.useSupportLibrary = true - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - buildTypes { - getByName("release") { - signingConfig = - if (hasSigningProps) { - signingConfigs.getByName("config") - } else { - signingConfigs.getByName("debug") - } - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - isDebuggable = false - } - - getByName("debug") { - signingConfig = - if (hasSigningProps) { - signingConfigs.getByName("config") - } else { - signingConfigs.getByName("debug") - } - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - isDebuggable = true - } - } - packaging { - resources { - excludes += "META-INF/DEPENDENCIES" - excludes += "META-INF/LICENSE" - excludes += "META-INF/LICENSE.txt" - excludes += "META-INF/license.txt" - excludes += "META-INF/NOTICE" - excludes += "META-INF/NOTICE.txt" - excludes += "META-INF/notice.txt" - excludes += "META-INF/ASL2.0" - excludes += "META-INF/*.kotlin_module" - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } - buildFeatures { - buildConfig = true - viewBinding = true - compose = true - } - composeOptions { - kotlinCompilerExtensionVersion = Compose.Version.compiler - } + id("todozy.android.application") } dependencies { implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) - implementation(project(Module.aboutImpl)) - implementation(project(Module.settingsImpl)) - implementation(project(Module.alarmImpl)) - implementation(project(Module.taskFormImpl)) - implementation(project(Module.taskHistoryImpl)) - implementation(project(Module.taskDetailsImpl)) - implementation(project(Module.taskListImpl)) - implementation(project(Module.splashImpl)) - implementation(project(Module.platformImpl)) - implementation(project(Module.uiComponentImpl)) - implementation(project(Module.navigationPublicAndroid)) - - implementation(Navigation.fragmentKtx) - implementation(Navigation.uiKtx) - implementation(Koin.android) - implementation(Timber.timber) - implementation(Compose.ui) - implementation(Compose.material) - implementation(Compose.materialIconsExtended) - - testImplementation(Junit.junit) - testImplementation(MockK.core) - testImplementation(Koin.test) + implementation(projects.feature.about.impl) + implementation(projects.feature.settings.impl) + implementation(projects.feature.alarm.impl) + implementation(projects.feature.taskForm.impl) + implementation(projects.feature.taskHistory.impl) + implementation(projects.feature.taskDetails.impl) + implementation(projects.feature.taskList.impl) + implementation(projects.feature.splash.impl) + implementation(projects.platform.impl) + implementation(projects.uiComponent.impl) + implementation(projects.feature.navigation.publicAndroid) + + implementation(libs.androidx.navigation.fragment.ktx) + implementation(libs.androidx.navigation.ui.ktx) + implementation(libs.koin.android) + implementation(libs.timber) + implementation(libs.androidx.compose.ui) + implementation(libs.androidx.compose.material) + implementation(libs.androidx.compose.material.icons.extended) + + testImplementation(libs.junit4) + testImplementation(libs.mockk.core) + testImplementation(libs.koin.test) } diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts new file mode 100644 index 00000000..7c69e7a1 --- /dev/null +++ b/build-logic/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + `kotlin-dsl` +} + +java { + toolchain { + languageVersion.set(JavaLanguageVersion.of(17)) + } +} + +dependencies { + implementation("com.android.tools.build:gradle:${libs.versions.agp.get()}") + implementation(kotlin("gradle-plugin", libs.versions.kotlin.get())) + implementation("com.google.firebase:firebase-crashlytics-gradle:${libs.versions.crashlyticsGradle.get()}") +} diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts new file mode 100644 index 00000000..9ed422c3 --- /dev/null +++ b/build-logic/settings.gradle.kts @@ -0,0 +1,15 @@ +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) + repositories { + google() + mavenCentral() + gradlePluginPortal() + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + +rootProject.name = "build-logic" diff --git a/build-logic/src/main/kotlin/todozy.android.application.gradle.kts b/build-logic/src/main/kotlin/todozy.android.application.gradle.kts new file mode 100644 index 00000000..6fc19788 --- /dev/null +++ b/build-logic/src/main/kotlin/todozy.android.application.gradle.kts @@ -0,0 +1,120 @@ +import com.android.build.api.dsl.ApplicationExtension +import java.util.Properties +import org.gradle.api.JavaVersion +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.getByType +import org.gradle.kotlin.dsl.withType +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + id("com.android.application") + kotlin("android") + kotlin("kapt") + id("com.google.firebase.crashlytics") +} + +private val libs = extensions.getByType().named("libs") + +fun loadLocalProperties(): Properties = + Properties().apply { + val file = rootProject.file("local.properties") + if (file.exists()) { + file.inputStream().use { load(it) } + } + } + +fun hasSigningProps(localProps: Properties): Boolean = + listOf("STORE_FILE", "STORE_PASSWORD", "KEY_ALIAS", "KEY_PASSWORD") + .all { key -> localProps.getProperty(key).isNullOrBlank().not() } + +extensions.configure { + val localProps = loadLocalProperties() + + signingConfigs { + if (hasSigningProps(localProps)) { + create("config") { + keyAlias = localProps.getProperty("KEY_ALIAS") + keyPassword = localProps.getProperty("KEY_PASSWORD") + storeFile = file(localProps.getProperty("STORE_FILE")) + storePassword = localProps.getProperty("STORE_PASSWORD") + } + } + } + + compileSdk = libs.findVersion("android-compileSdk").get().requiredVersion.toInt() + namespace = "br.com.sailboat.todozy" + defaultConfig { + applicationId = "br.com.sailboat.todozy" + minSdk = libs.findVersion("android-minSdk").get().requiredVersion.toInt() + targetSdk = libs.findVersion("android-targetSdk").get().requiredVersion.toInt() + versionCode = 14 + versionName = "1.5" + vectorDrawables.useSupportLibrary = true + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + getByName("release") { + signingConfig = + if (hasSigningProps(localProps)) { + signingConfigs.getByName("config") + } else { + signingConfigs.getByName("debug") + } + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + ) + isDebuggable = false + } + getByName("debug") { + signingConfig = + if (hasSigningProps(localProps)) { + signingConfigs.getByName("config") + } else { + signingConfigs.getByName("debug") + } + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + ) + isDebuggable = true + } + } + + packaging { + resources.excludes += listOf( + "META-INF/DEPENDENCIES", + "META-INF/LICENSE", + "META-INF/LICENSE.txt", + "META-INF/license.txt", + "META-INF/NOTICE", + "META-INF/NOTICE.txt", + "META-INF/notice.txt", + "META-INF/ASL2.0", + "META-INF/*.kotlin_module", + ) + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + buildFeatures { + buildConfig = true + viewBinding = true + compose = true + } + composeOptions { + kotlinCompilerExtensionVersion = libs.findVersion("composeCompiler").get().requiredVersion + } +} + +tasks.withType().configureEach { + kotlinOptions { + jvmTarget = "17" + } +} diff --git a/build-logic/src/main/kotlin/todozy.android.library.compose.gradle.kts b/build-logic/src/main/kotlin/todozy.android.library.compose.gradle.kts new file mode 100644 index 00000000..309f648c --- /dev/null +++ b/build-logic/src/main/kotlin/todozy.android.library.compose.gradle.kts @@ -0,0 +1,19 @@ +import com.android.build.api.dsl.LibraryExtension +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.getByType +import org.gradle.api.artifacts.VersionCatalogsExtension + +plugins { + id("todozy.android.library") +} + +private val libs = extensions.getByType().named("libs") + +extensions.configure { + buildFeatures { + compose = true + } + composeOptions { + kotlinCompilerExtensionVersion = libs.findVersion("composeCompiler").get().requiredVersion + } +} diff --git a/build-logic/src/main/kotlin/todozy.android.library.crashlytics.gradle.kts b/build-logic/src/main/kotlin/todozy.android.library.crashlytics.gradle.kts new file mode 100644 index 00000000..6cb67c30 --- /dev/null +++ b/build-logic/src/main/kotlin/todozy.android.library.crashlytics.gradle.kts @@ -0,0 +1,4 @@ +plugins { + id("todozy.android.library") + id("com.google.firebase.crashlytics") +} diff --git a/build-logic/src/main/kotlin/todozy.android.library.gradle.kts b/build-logic/src/main/kotlin/todozy.android.library.gradle.kts new file mode 100644 index 00000000..c484ad54 --- /dev/null +++ b/build-logic/src/main/kotlin/todozy.android.library.gradle.kts @@ -0,0 +1,44 @@ +import com.android.build.api.dsl.LibraryExtension +import org.gradle.api.JavaVersion +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.getByType +import org.gradle.kotlin.dsl.withType +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + id("com.android.library") + kotlin("android") +} + +private val libs = extensions.getByType().named("libs") + +extensions.configure { + compileSdk = libs.findVersion("android-compileSdk").get().requiredVersion.toInt() + defaultConfig { + minSdk = libs.findVersion("android-minSdk").get().requiredVersion.toInt() + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + buildTypes { + getByName("release") { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + buildFeatures { + viewBinding = true + } +} + +tasks.withType().configureEach { + kotlinOptions { + jvmTarget = "17" + } +} diff --git a/build-logic/src/main/kotlin/todozy.jvm.library.gradle.kts b/build-logic/src/main/kotlin/todozy.jvm.library.gradle.kts new file mode 100644 index 00000000..40fc1d99 --- /dev/null +++ b/build-logic/src/main/kotlin/todozy.jvm.library.gradle.kts @@ -0,0 +1,17 @@ +import org.gradle.api.JavaVersion +import org.gradle.kotlin.dsl.withType +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + `java-library` + kotlin("jvm") +} + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +tasks.withType().configureEach { + kotlinOptions.jvmTarget = "17" +} diff --git a/build.gradle.kts b/build.gradle.kts index 74d3d45b..0a95864b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,23 +2,17 @@ import com.android.build.gradle.BaseExtension import org.gradle.api.GradleException import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.api.tasks.testing.logging.TestLogEvent - -buildscript { - - repositories { - google() - mavenCentral() - } - dependencies { - classpath(BuildPlugin.android) - classpath(BuildPlugin.kotlin) - classpath(BuildPlugin.googleServices) - classpath(BuildPlugin.crashlytics) - } -} +import org.gradle.kotlin.dsl.the plugins { - id("org.jlleitschuh.gradle.ktlint") version "12.1.0" + 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.kapt) apply false + alias(libs.plugins.kotlin.jvm) apply false + alias(libs.plugins.google.services) apply false + alias(libs.plugins.crashlytics) apply false + alias(libs.plugins.ktlint) } subprojects { @@ -28,7 +22,9 @@ subprojects { isCoreLibraryDesugaringEnabled = true } } - dependencies.add("coreLibraryDesugaring", Desugar.jdkLibs) + dependencies { + add("coreLibraryDesugaring", libs.desugar.jdk.libs) + } } plugins.withId("com.android.library") { extensions.configure("android") { @@ -36,7 +32,9 @@ subprojects { isCoreLibraryDesugaringEnabled = true } } - dependencies.add("coreLibraryDesugaring", Desugar.jdkLibs) + dependencies { + add("coreLibraryDesugaring", libs.desugar.jdk.libs) + } } } @@ -46,10 +44,6 @@ var testsFailed = 0L var testsSkipped = 0L allprojects { - repositories { - google() - mavenCentral() - } apply(plugin = "org.jlleitschuh.gradle.ktlint") // Test Logging @@ -114,7 +108,7 @@ allprojects { } tasks.register("clean", Delete::class) { - delete(rootProject.buildDir) + delete(rootProject.layout.buildDirectory) } tasks.register("forbidSimpleDateFormat") { diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts deleted file mode 100644 index b22ed732..00000000 --- a/buildSrc/build.gradle.kts +++ /dev/null @@ -1,7 +0,0 @@ -plugins { - `kotlin-dsl` -} - -repositories { - mavenCentral() -} \ No newline at end of file diff --git a/buildSrc/src/main/java/Dependency.kt b/buildSrc/src/main/java/Dependency.kt deleted file mode 100644 index 4b188697..00000000 --- a/buildSrc/src/main/java/Dependency.kt +++ /dev/null @@ -1,213 +0,0 @@ -object BuildPlugin { - object Version { - const val gradlePlugin = "8.10.1" - const val kotlin = "1.9.25" - const val googleServices = "4.4.2" - const val crashlytics = "2.9.9" - } - - const val android = "com.android.tools.build:gradle:${Version.gradlePlugin}" - const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Version.kotlin}" - const val googleServices = "com.google.gms:google-services:${Version.googleServices}" - const val crashlytics = "com.google.firebase:firebase-crashlytics-gradle:${Version.crashlytics}" -} - -object BuildVersion { - const val versionCode = 14 - const val versionName = "1.5" - const val compileSdk = 36 - const val minSdk = 24 - const val targetSdk = 35 -} - -object Coroutines { - object Version { - const val coroutines = "1.8.1" - } - - const val core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Version.coroutines}" - const val android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Version.coroutines}" - const val test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:${Version.coroutines}" -} - -object Lifecycle { - object Version { - const val lifecycle = "2.7.0" - const val lifecycleTesting = "2.2.0" - } - - const val runtime = "androidx.lifecycle:lifecycle-runtime-ktx:${Version.lifecycle}" - const val viewModel = "androidx.lifecycle:lifecycle-viewmodel-ktx:${Version.lifecycle}" - const val liveData = "androidx.lifecycle:lifecycle-livedata-ktx:${Version.lifecycle}" - const val service = "androidx.lifecycle:lifecycle-service:${Version.lifecycle}" - const val test = "androidx.arch.core:core-testing:${Version.lifecycleTesting}" -} - -object AndroidX { - object Versions { - const val ktx = "1.12.0" - const val appcompat = "1.6.1" - const val materialDesign = "1.12.0" - const val browser = "1.8.0" - const val recyclerView = "1.3.2" - const val legacy = "1.0.0" - const val swipeRefreshLayout = "1.1.0" - const val transition = "1.4.1" - const val annotation = "1.7.1" - const val fragment = "1.7.1" - const val viewPager = "1.0.0" - const val viewPager2 = "1.0.0" - const val preferences = "1.2.1" - const val collection = "1.4.0" - const val activity = "1.9.0" - const val constraintLayout = "2.1.4" - } - - const val ktx = "androidx.core:core-ktx:${Versions.ktx}" - const val appcompat = "androidx.appcompat:appcompat:${Versions.appcompat}" - const val materialDesign = "com.google.android.material:material:${Versions.materialDesign}" - const val constraintLayout = - "androidx.constraintlayout:constraintlayout:${Versions.constraintLayout}" - const val recyclerview = "androidx.recyclerview:recyclerview:${Versions.recyclerView}" - const val legacy = "androidx.legacy:legacy-support-v4:${Versions.legacy}" - const val annotations = "androidx.annotation:annotation:${Versions.annotation}" - - const val fragment = "androidx.fragment:fragment-ktx:${Versions.fragment}" - const val preferences = "androidx.preference:preference:${Versions.preferences}" - const val viewPager = "androidx.viewpager:viewpager:${Versions.viewPager}" - const val viewPager2 = "androidx.viewpager2:viewpager2:${Versions.viewPager2}" - - const val collection = "androidx.collection:collection:${Versions.collection}" - const val activity = "androidx.activity:activity:${Versions.activity}" -} - -object Navigation { - object Version { - const val navigation = "2.7.7" - } - - const val fragmentKtx = "androidx.navigation:navigation-fragment-ktx:${Version.navigation}" - const val uiKtx = "androidx.navigation:navigation-ui-ktx:${Version.navigation}" -} - -object AndroidXTest { - object Version { - const val test = "1.5.0" - const val junit = "1.1.5" - const val espresso = "3.5.1" - } - - const val ext = "androidx.test.ext:junit:${Version.junit}" - const val rules = "androidx.test:rules:${Version.test}" - const val runner = "androidx.test:runner:${Version.test}" - const val espresso = "androidx.test.espresso:espresso-core:${Version.espresso}" - const val espressoContrib = "androidx.test.espresso:espresso-contrib:${Version.espresso}" - const val orchestrator = "androidx.test:orchestrator:${Version.test}" -} - -object MockK { - object Version { - const val mockk = "1.13.10" - } - - const val core = "io.mockk:mockk:${Version.mockk}" - const val android = "io.mockk:mockk-android:${Version.mockk}" -} - -object Koin { - object Version { - const val koin = "3.5.6" - } - - const val android = "io.insert-koin:koin-android:${Version.koin}" - const val test = "io.insert-koin:koin-test:${Version.koin}" -} - -object Junit { - object Version { - const val junit = "4.13.2" - } - - const val junit = "junit:junit:${Version.junit}" -} - -object Firebase { - object Version { - const val core = "21.1.1" - const val bom = "32.8.1" - } - - const val core = "com.google.firebase:firebase-core:${Version.core}" - const val crashlytics = "com.google.firebase:firebase-crashlytics-ktx" - const val analytics = "com.google.firebase:firebase-analytics-ktx" - const val bom = "com.google.firebase:firebase-bom:${Version.bom}" -} - -object Kotlin { - object Version { - const val kotlin = "1.9.25" - } - - const val test = "org.jetbrains.kotlin:kotlin-test-junit:${Version.kotlin}" - const val stdlib = "org.jetbrains.kotlin:kotlin-stdlib:${Version.kotlin}" - const val reflect = "org.jetbrains.kotlin:kotlin-reflect:${Version.kotlin}" -} - -object Timber { - object Version { - const val timber = "4.7.1" - } - - const val timber = "com.jakewharton.timber:timber:${Version.timber}" -} - -object Flipper { - object Version { - const val flipper = "0.154.0" - const val soloader = "0.10.1" - } - - const val flipper = "com.facebook.flipper:flipper:${Version.flipper}" - const val flipperNoop = "com.facebook.flipper:flipper-noop:${Version.flipper}" - const val soloader = "com.facebook.soloader:soloader:${Version.soloader}" -} - -object Hilt { - object Version { - const val core = "2.51.1" - const val lifecycleViewModel = "1.1.0" - const val compiler = "1.1.0" - const val navigationCompose = "1.2.0" - } - - const val android = "com.google.dagger:hilt-android:${Version.core}" - const val androidCompiler = "com.google.dagger:hilt-android-compiler:${Version.core}" - const val lifecycleViewModel = "androidx.hilt:hilt-lifecycle-viewmodel:${Version.lifecycleViewModel}" - const val compiler = "androidx.hilt:hilt-compiler:${Version.compiler}" - const val navigationCompose = "androidx.hilt:hilt-navigation-compose:${Version.navigationCompose}" -} - -object Compose { - object Version { - const val core = "1.10.0" - const val materialIcons = "1.7.8" - const val lifecycleRuntime = "2.7.0" - const val compiler = "1.5.15" - } - - const val ui = "androidx.compose.ui:ui:${Version.core}" - const val material = "androidx.compose.material:material:${Version.core}" - const val materialIconsExtended = "androidx.compose.material:material-icons-extended:${Version.materialIcons}" - const val uiToolingPreview = "androidx.compose.ui:ui-tooling-preview:${Version.core}" - const val lifecycleRuntimeKtx = "androidx.lifecycle:lifecycle-runtime-ktx:${Version.lifecycleRuntime}" - const val uiTestJunit4 = "androidx.compose.ui:ui-test-junit4:${Version.core}" - const val runtimeLiveData = "androidx.compose.runtime:runtime-livedata:${Version.core}" -} - -object Desugar { - object Version { - const val jdkLibs = "2.0.4" - } - - const val jdkLibs = "com.android.tools:desugar_jdk_libs:${Version.jdkLibs}" -} diff --git a/buildSrc/src/main/java/Module.kt b/buildSrc/src/main/java/Module.kt deleted file mode 100644 index 78f51509..00000000 --- a/buildSrc/src/main/java/Module.kt +++ /dev/null @@ -1,24 +0,0 @@ -object Module { - const val kotlinUtil = ":utility:kotlin-util" - const val androidUtil = ":utility:android-util" - const val uiComponentPublic = ":ui-component:public" - const val uiComponentImpl = ":ui-component:impl" - const val domain = ":domain" - const val aboutImpl = ":feature:about:impl" - const val settingsPublic = ":feature:settings:public" - const val settingsPublicAndroid = ":feature:settings:public-android" - const val settingsImpl = ":feature:settings:impl" - const val alarmPublic = ":feature:alarm:public" - const val alarmImpl = ":feature:alarm:impl" - const val taskHistoryPublic = ":feature:task-history:public" - const val taskHistoryImpl = ":feature:task-history:impl" - const val taskFormPublic = ":feature:task-form:public" - const val taskFormImpl = ":feature:task-form:impl" - const val taskListPublic = ":feature:task-list:public" - const val taskListImpl = ":feature:task-list:impl" - const val taskDetailsPublic = ":feature:task-details:public" - const val taskDetailsImpl = ":feature:task-details:impl" - const val splashImpl = ":feature:splash:impl" - const val navigationPublicAndroid = ":feature:navigation:public-android" - const val platformImpl = ":platform:impl" -} diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts index 6773f5fc..56ec8dcb 100644 --- a/domain/build.gradle.kts +++ b/domain/build.gradle.kts @@ -1,17 +1,7 @@ plugins { - id("java-library") - id("org.jetbrains.kotlin.jvm") -} - -java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -tasks.withType { - kotlinOptions.jvmTarget = "17" + id("todozy.jvm.library") } dependencies { - implementation(project(Module.kotlinUtil)) + implementation(projects.utility.kotlinUtil) } diff --git a/feature/about/impl/build.gradle.kts b/feature/about/impl/build.gradle.kts index 0a1f04a5..14e5e60d 100644 --- a/feature/about/impl/build.gradle.kts +++ b/feature/about/impl/build.gradle.kts @@ -1,62 +1,34 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("todozy.android.library") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.todozy.feature.about.impl" - - defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } - buildFeatures { - viewBinding = true - } } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.androidUtil)) - implementation(project(Module.uiComponentPublic)) - implementation(project(Module.uiComponentImpl)) - implementation(project(Module.domain)) - implementation(project(Module.navigationPublicAndroid)) - implementation(project(Module.alarmPublic)) - - implementation(Lifecycle.viewModel) - implementation(Koin.android) - implementation(AndroidX.appcompat) - implementation(AndroidX.recyclerview) - implementation(AndroidX.materialDesign) - - testImplementation(Junit.junit) - testImplementation(MockK.core) - testImplementation(Kotlin.test) - testImplementation(Coroutines.test) - testImplementation(Lifecycle.test) - - androidTestImplementation(MockK.android) - androidTestImplementation(AndroidXTest.espresso) - androidTestImplementation(AndroidXTest.runner) - androidTestImplementation(AndroidXTest.rules) + implementation(projects.utility.kotlinUtil) + implementation(projects.utility.androidUtil) + implementation(projects.uiComponent.public) + implementation(projects.uiComponent.impl) + implementation(projects.domain) + implementation(projects.feature.navigation.publicAndroid) + implementation(projects.feature.alarm.public) + + implementation(libs.androidx.lifecycle.viewmodel) + implementation(libs.koin.android) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.recyclerview) + implementation(libs.androidx.material) + + testImplementation(libs.junit4) + testImplementation(libs.mockk.core) + testImplementation(libs.kotlin.test) + testImplementation(libs.coroutines.test) + testImplementation(libs.androidx.lifecycle.test) + + androidTestImplementation(libs.mockk.android) + androidTestImplementation(libs.espresso.core) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.androidx.test.rules) } diff --git a/feature/alarm/impl/build.gradle.kts b/feature/alarm/impl/build.gradle.kts index 042206c9..d8fae23a 100644 --- a/feature/alarm/impl/build.gradle.kts +++ b/feature/alarm/impl/build.gradle.kts @@ -1,66 +1,38 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("todozy.android.library") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.todozy.feature.alarm.impl" - - defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } - buildFeatures { - viewBinding = true - } } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.androidUtil)) - implementation(project(Module.uiComponentPublic)) - implementation(project(Module.uiComponentImpl)) - implementation(project(Module.domain)) - implementation(project(Module.alarmPublic)) - implementation(project(Module.navigationPublicAndroid)) - implementation(project(Module.taskDetailsPublic)) - implementation(project(Module.taskFormPublic)) - implementation(project(Module.taskHistoryPublic)) - implementation(project(Module.taskListPublic)) - implementation(project(Module.settingsPublic)) - implementation(project(Module.settingsPublicAndroid)) - - implementation(Lifecycle.viewModel) - implementation(Koin.android) - implementation(AndroidX.appcompat) - - testImplementation(Junit.junit) - testImplementation(MockK.core) - testImplementation(Kotlin.test) - testImplementation(Coroutines.test) - testImplementation(Lifecycle.test) - - androidTestImplementation(MockK.android) - androidTestImplementation(AndroidXTest.espresso) - androidTestImplementation(AndroidXTest.runner) - androidTestImplementation(AndroidXTest.rules) + implementation(projects.utility.kotlinUtil) + implementation(projects.utility.androidUtil) + implementation(projects.uiComponent.public) + implementation(projects.uiComponent.impl) + implementation(projects.domain) + implementation(projects.feature.alarm.public) + implementation(projects.feature.navigation.publicAndroid) + implementation(projects.feature.taskDetails.public) + implementation(projects.feature.taskForm.public) + implementation(projects.feature.taskHistory.public) + implementation(projects.feature.taskList.public) + implementation(projects.feature.settings.public) + implementation(projects.feature.settings.publicAndroid) + + implementation(libs.androidx.lifecycle.viewmodel) + implementation(libs.koin.android) + implementation(libs.androidx.appcompat) + + testImplementation(libs.junit4) + testImplementation(libs.mockk.core) + testImplementation(libs.kotlin.test) + testImplementation(libs.coroutines.test) + testImplementation(libs.androidx.lifecycle.test) + + androidTestImplementation(libs.mockk.android) + androidTestImplementation(libs.espresso.core) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.androidx.test.rules) } diff --git a/feature/alarm/public/build.gradle.kts b/feature/alarm/public/build.gradle.kts index ce862af3..6ee829ff 100644 --- a/feature/alarm/public/build.gradle.kts +++ b/feature/alarm/public/build.gradle.kts @@ -1,19 +1,9 @@ plugins { - id("java-library") - id("org.jetbrains.kotlin.jvm") -} - -java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -tasks.withType { - kotlinOptions.jvmTarget = "17" + id("todozy.jvm.library") } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.uiComponentPublic)) - implementation(project(Module.domain)) + implementation(projects.utility.kotlinUtil) + implementation(projects.uiComponent.public) + implementation(projects.domain) } diff --git a/feature/navigation/public-android/build.gradle.kts b/feature/navigation/public-android/build.gradle.kts index 3a85f06e..2d9e9db1 100644 --- a/feature/navigation/public-android/build.gradle.kts +++ b/feature/navigation/public-android/build.gradle.kts @@ -1,34 +1,15 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("todozy.android.library") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.todozy.feature.navigation.android" defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } } dependencies { - implementation(AndroidX.appcompat) + implementation(libs.androidx.appcompat) } diff --git a/feature/settings/impl/build.gradle.kts b/feature/settings/impl/build.gradle.kts index 9d676201..6e175475 100644 --- a/feature/settings/impl/build.gradle.kts +++ b/feature/settings/impl/build.gradle.kts @@ -1,66 +1,38 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("todozy.android.library") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.todozy.feature.settings.impl" - - defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } - buildFeatures { - viewBinding = true - } } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.androidUtil)) - implementation(project(Module.uiComponentPublic)) - implementation(project(Module.uiComponentImpl)) - implementation(project(Module.domain)) - implementation(project(Module.navigationPublicAndroid)) - implementation(project(Module.alarmPublic)) - implementation(project(Module.settingsPublic)) - implementation(project(Module.settingsPublicAndroid)) - - implementation(Coroutines.core) - implementation(Coroutines.android) - implementation(Lifecycle.viewModel) - implementation(Koin.android) - implementation(AndroidX.appcompat) - implementation(AndroidX.recyclerview) - implementation(AndroidX.materialDesign) - - testImplementation(Junit.junit) - testImplementation(MockK.core) - testImplementation(Kotlin.test) - testImplementation(Coroutines.test) - testImplementation(Lifecycle.test) - - androidTestImplementation(MockK.android) - androidTestImplementation(AndroidXTest.espresso) - androidTestImplementation(AndroidXTest.runner) - androidTestImplementation(AndroidXTest.rules) + implementation(projects.utility.kotlinUtil) + implementation(projects.utility.androidUtil) + implementation(projects.uiComponent.public) + implementation(projects.uiComponent.impl) + implementation(projects.domain) + implementation(projects.feature.navigation.publicAndroid) + implementation(projects.feature.alarm.public) + implementation(projects.feature.settings.public) + implementation(projects.feature.settings.publicAndroid) + + implementation(libs.coroutines.core) + implementation(libs.coroutines.android) + implementation(libs.androidx.lifecycle.viewmodel) + implementation(libs.koin.android) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.recyclerview) + implementation(libs.androidx.material) + + testImplementation(libs.junit4) + testImplementation(libs.mockk.core) + testImplementation(libs.kotlin.test) + testImplementation(libs.coroutines.test) + testImplementation(libs.androidx.lifecycle.test) + + androidTestImplementation(libs.mockk.android) + androidTestImplementation(libs.espresso.core) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.androidx.test.rules) } diff --git a/feature/settings/public-android/build.gradle.kts b/feature/settings/public-android/build.gradle.kts index 2aff779f..81cd27dc 100644 --- a/feature/settings/public-android/build.gradle.kts +++ b/feature/settings/public-android/build.gradle.kts @@ -1,35 +1,7 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("todozy.android.library") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.todozy.feature.settings.android" - - defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } - buildFeatures { - viewBinding = true - } } diff --git a/feature/settings/public/build.gradle.kts b/feature/settings/public/build.gradle.kts index c2a357f6..ad99ee26 100644 --- a/feature/settings/public/build.gradle.kts +++ b/feature/settings/public/build.gradle.kts @@ -1,13 +1,3 @@ plugins { - id("java-library") - id("org.jetbrains.kotlin.jvm") -} - -java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -tasks.withType { - kotlinOptions.jvmTarget = "17" + id("todozy.jvm.library") } diff --git a/feature/splash/impl/build.gradle.kts b/feature/splash/impl/build.gradle.kts index 319aeb8d..ce458af2 100644 --- a/feature/splash/impl/build.gradle.kts +++ b/feature/splash/impl/build.gradle.kts @@ -1,55 +1,27 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("todozy.android.library") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.todozy.feature.splash.impl" - - defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } - buildFeatures { - viewBinding = true - } } dependencies { - implementation(project(Module.androidUtil)) - implementation(project(Module.navigationPublicAndroid)) - implementation(project(Module.settingsPublic)) - implementation(project(Module.uiComponentImpl)) + implementation(projects.utility.androidUtil) + implementation(projects.feature.navigation.publicAndroid) + implementation(projects.feature.settings.public) + implementation(projects.uiComponent.impl) - implementation(Coroutines.core) - implementation(Coroutines.android) - implementation(Lifecycle.runtime) - implementation(Lifecycle.liveData) - implementation(Koin.android) - implementation(AndroidX.appcompat) + implementation(libs.coroutines.core) + implementation(libs.coroutines.android) + implementation(libs.androidx.lifecycle.runtime) + implementation(libs.androidx.lifecycle.livedata) + implementation(libs.koin.android) + implementation(libs.androidx.appcompat) - testImplementation(Junit.junit) - testImplementation(MockK.core) - testImplementation(Kotlin.test) - testImplementation(Coroutines.test) - testImplementation(Lifecycle.test) + testImplementation(libs.junit4) + testImplementation(libs.mockk.core) + testImplementation(libs.kotlin.test) + testImplementation(libs.coroutines.test) + testImplementation(libs.androidx.lifecycle.test) } diff --git a/feature/task-details/impl/build.gradle.kts b/feature/task-details/impl/build.gradle.kts index c09a1947..702cac26 100644 --- a/feature/task-details/impl/build.gradle.kts +++ b/feature/task-details/impl/build.gradle.kts @@ -1,70 +1,42 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("todozy.android.library") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.todozy.feature.task.details.impl" - - defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } - buildFeatures { - viewBinding = true - } } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.androidUtil)) - implementation(project(Module.uiComponentPublic)) - implementation(project(Module.uiComponentImpl)) - implementation(project(Module.domain)) - implementation(project(Module.navigationPublicAndroid)) - implementation(project(Module.alarmPublic)) - implementation(project(Module.taskHistoryPublic)) - implementation(project(Module.taskDetailsPublic)) - - implementation(Coroutines.core) - implementation(Coroutines.android) - implementation(Lifecycle.viewModel) - implementation(Koin.android) - implementation(AndroidX.appcompat) - implementation(AndroidX.recyclerview) - implementation(AndroidX.ktx) - implementation(AndroidX.constraintLayout) - implementation(AndroidX.materialDesign) - - testImplementation(Junit.junit) - testImplementation(MockK.core) - testImplementation(Kotlin.test) - testImplementation(Coroutines.test) - testImplementation(Lifecycle.test) - - androidTestImplementation(MockK.android) - androidTestImplementation(AndroidXTest.espresso) - androidTestImplementation(AndroidXTest.runner) - androidTestImplementation(AndroidXTest.rules) + implementation(projects.utility.kotlinUtil) + implementation(projects.utility.androidUtil) + implementation(projects.uiComponent.public) + implementation(projects.uiComponent.impl) + implementation(projects.domain) + implementation(projects.feature.navigation.publicAndroid) + implementation(projects.feature.alarm.public) + implementation(projects.feature.taskHistory.public) + implementation(projects.feature.taskDetails.public) + + implementation(libs.coroutines.core) + implementation(libs.coroutines.android) + implementation(libs.androidx.lifecycle.viewmodel) + implementation(libs.koin.android) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.recyclerview) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.constraintlayout) + implementation(libs.androidx.material) + + testImplementation(libs.junit4) + testImplementation(libs.mockk.core) + testImplementation(libs.kotlin.test) + testImplementation(libs.coroutines.test) + testImplementation(libs.androidx.lifecycle.test) + + androidTestImplementation(libs.mockk.android) + androidTestImplementation(libs.espresso.core) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.androidx.test.rules) } configurations diff --git a/feature/task-details/public/build.gradle.kts b/feature/task-details/public/build.gradle.kts index 951e6d8f..28e1d9bc 100644 --- a/feature/task-details/public/build.gradle.kts +++ b/feature/task-details/public/build.gradle.kts @@ -1,19 +1,9 @@ plugins { - id("java-library") - id("org.jetbrains.kotlin.jvm") -} - -java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -tasks.withType { - kotlinOptions.jvmTarget = "17" + id("todozy.jvm.library") } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.domain)) - implementation(project(Module.taskHistoryPublic)) + implementation(projects.utility.kotlinUtil) + implementation(projects.domain) + implementation(projects.feature.taskHistory.public) } diff --git a/feature/task-form/impl/build.gradle.kts b/feature/task-form/impl/build.gradle.kts index 8771b985..6f9ee131 100644 --- a/feature/task-form/impl/build.gradle.kts +++ b/feature/task-form/impl/build.gradle.kts @@ -1,68 +1,40 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("todozy.android.library") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.todozy.feature.task.form.impl" - - defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } - buildFeatures { - viewBinding = true - } } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.androidUtil)) - implementation(project(Module.uiComponentPublic)) - implementation(project(Module.uiComponentImpl)) - implementation(project(Module.domain)) - implementation(project(Module.navigationPublicAndroid)) - implementation(project(Module.taskFormPublic)) - implementation(project(Module.taskDetailsPublic)) - implementation(project(Module.alarmPublic)) - - implementation(Coroutines.core) - implementation(Coroutines.android) - implementation(Lifecycle.viewModel) - implementation(Lifecycle.runtime) - implementation(Lifecycle.liveData) - implementation(Koin.android) - implementation(AndroidX.appcompat) - implementation(AndroidX.constraintLayout) - implementation(AndroidX.materialDesign) - - testImplementation(Junit.junit) - testImplementation(MockK.core) - testImplementation(Kotlin.test) - testImplementation(Coroutines.test) - testImplementation(Lifecycle.test) - - androidTestImplementation(MockK.android) - androidTestImplementation(AndroidXTest.espresso) - androidTestImplementation(AndroidXTest.runner) - androidTestImplementation(AndroidXTest.rules) + implementation(projects.utility.kotlinUtil) + implementation(projects.utility.androidUtil) + implementation(projects.uiComponent.public) + implementation(projects.uiComponent.impl) + implementation(projects.domain) + implementation(projects.feature.navigation.publicAndroid) + implementation(projects.feature.taskForm.public) + implementation(projects.feature.taskDetails.public) + implementation(projects.feature.alarm.public) + + implementation(libs.coroutines.core) + implementation(libs.coroutines.android) + implementation(libs.androidx.lifecycle.viewmodel) + implementation(libs.androidx.lifecycle.runtime) + implementation(libs.androidx.lifecycle.livedata) + implementation(libs.koin.android) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.constraintlayout) + implementation(libs.androidx.material) + + testImplementation(libs.junit4) + testImplementation(libs.mockk.core) + testImplementation(libs.kotlin.test) + testImplementation(libs.coroutines.test) + testImplementation(libs.androidx.lifecycle.test) + + androidTestImplementation(libs.mockk.android) + androidTestImplementation(libs.espresso.core) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.androidx.test.rules) } diff --git a/feature/task-form/public/build.gradle.kts b/feature/task-form/public/build.gradle.kts index c6b44b5b..ba38e2da 100644 --- a/feature/task-form/public/build.gradle.kts +++ b/feature/task-form/public/build.gradle.kts @@ -1,18 +1,8 @@ plugins { - id("java-library") - id("org.jetbrains.kotlin.jvm") -} - -java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -tasks.withType { - kotlinOptions.jvmTarget = "17" + id("todozy.jvm.library") } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.domain)) + implementation(projects.utility.kotlinUtil) + implementation(projects.domain) } diff --git a/feature/task-history/impl/build.gradle.kts b/feature/task-history/impl/build.gradle.kts index d6cec41c..abe06585 100644 --- a/feature/task-history/impl/build.gradle.kts +++ b/feature/task-history/impl/build.gradle.kts @@ -1,68 +1,40 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("todozy.android.library") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.todozy.feature.task.history.impl" - - defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } - buildFeatures { - viewBinding = true - } } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.androidUtil)) - implementation(project(Module.uiComponentPublic)) - implementation(project(Module.uiComponentImpl)) - implementation(project(Module.domain)) - implementation(project(Module.navigationPublicAndroid)) - implementation(project(Module.taskHistoryPublic)) - implementation(project(Module.taskDetailsPublic)) - implementation(Navigation.fragmentKtx) - - implementation(Coroutines.core) - implementation(Coroutines.android) - implementation(Lifecycle.viewModel) - implementation(Lifecycle.runtime) - implementation(Lifecycle.liveData) - implementation(Koin.android) - implementation(AndroidX.appcompat) - implementation(AndroidX.recyclerview) - implementation(AndroidX.materialDesign) - - testImplementation(Junit.junit) - testImplementation(MockK.core) - testImplementation(Kotlin.test) - testImplementation(Coroutines.test) - testImplementation(Lifecycle.test) - - androidTestImplementation(MockK.android) - androidTestImplementation(AndroidXTest.espresso) - androidTestImplementation(AndroidXTest.runner) - androidTestImplementation(AndroidXTest.rules) + implementation(projects.utility.kotlinUtil) + implementation(projects.utility.androidUtil) + implementation(projects.uiComponent.public) + implementation(projects.uiComponent.impl) + implementation(projects.domain) + implementation(projects.feature.navigation.publicAndroid) + implementation(projects.feature.taskHistory.public) + implementation(projects.feature.taskDetails.public) + implementation(libs.androidx.navigation.fragment.ktx) + + implementation(libs.coroutines.core) + implementation(libs.coroutines.android) + implementation(libs.androidx.lifecycle.viewmodel) + implementation(libs.androidx.lifecycle.runtime) + implementation(libs.androidx.lifecycle.livedata) + implementation(libs.koin.android) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.recyclerview) + implementation(libs.androidx.material) + + testImplementation(libs.junit4) + testImplementation(libs.mockk.core) + testImplementation(libs.kotlin.test) + testImplementation(libs.coroutines.test) + testImplementation(libs.androidx.lifecycle.test) + + androidTestImplementation(libs.mockk.android) + androidTestImplementation(libs.espresso.core) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.androidx.test.rules) } diff --git a/feature/task-history/public/build.gradle.kts b/feature/task-history/public/build.gradle.kts index c6b44b5b..ba38e2da 100644 --- a/feature/task-history/public/build.gradle.kts +++ b/feature/task-history/public/build.gradle.kts @@ -1,18 +1,8 @@ plugins { - id("java-library") - id("org.jetbrains.kotlin.jvm") -} - -java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -tasks.withType { - kotlinOptions.jvmTarget = "17" + id("todozy.jvm.library") } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.domain)) + implementation(projects.utility.kotlinUtil) + implementation(projects.domain) } diff --git a/feature/task-list/impl/build.gradle.kts b/feature/task-list/impl/build.gradle.kts index ca5db70f..f4a42bfe 100644 --- a/feature/task-list/impl/build.gradle.kts +++ b/feature/task-list/impl/build.gradle.kts @@ -1,41 +1,13 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("todozy.android.library.compose") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.todozy.feature.task.list.impl" - defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } buildFeatures { - compose = true viewBinding = false } - composeOptions { - kotlinCompilerExtensionVersion = Compose.Version.compiler - } testOptions { unitTests.all { it.systemProperty("kotlinx.coroutines.fast.service.loader", "false") @@ -48,43 +20,43 @@ configurations.matching { it.name.contains("UnitTest") }.configureEach { } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.androidUtil)) - implementation(project(Module.uiComponentPublic)) - implementation(project(Module.uiComponentImpl)) - implementation(project(Module.domain)) - implementation(project(Module.taskListPublic)) - implementation(project(Module.navigationPublicAndroid)) - implementation(project(Module.alarmPublic)) - implementation(project(Module.taskDetailsPublic)) - implementation(project(Module.taskFormPublic)) - implementation(project(Module.taskHistoryPublic)) - - implementation(Coroutines.core) - implementation(Coroutines.android) - implementation(Lifecycle.viewModel) - implementation(Lifecycle.runtime) - implementation(Lifecycle.liveData) - implementation(Koin.android) - implementation(AndroidX.appcompat) - implementation(AndroidX.recyclerview) - implementation(AndroidX.constraintLayout) - implementation(AndroidX.materialDesign) - implementation(Compose.material) - implementation(Compose.ui) - implementation(Compose.uiToolingPreview) - implementation(Compose.runtimeLiveData) - implementation(Compose.materialIconsExtended) - - testImplementation(Junit.junit) - testImplementation(MockK.core) - testImplementation(Kotlin.test) - testImplementation(Coroutines.test) - testImplementation(Lifecycle.test) - testRuntimeOnly(Coroutines.test) - - androidTestImplementation(MockK.android) - androidTestImplementation(AndroidXTest.espresso) - androidTestImplementation(AndroidXTest.runner) - androidTestImplementation(AndroidXTest.rules) + implementation(projects.utility.kotlinUtil) + implementation(projects.utility.androidUtil) + implementation(projects.uiComponent.public) + implementation(projects.uiComponent.impl) + implementation(projects.domain) + implementation(projects.feature.taskList.public) + implementation(projects.feature.navigation.publicAndroid) + implementation(projects.feature.alarm.public) + implementation(projects.feature.taskDetails.public) + implementation(projects.feature.taskForm.public) + implementation(projects.feature.taskHistory.public) + + implementation(libs.coroutines.core) + implementation(libs.coroutines.android) + implementation(libs.androidx.lifecycle.viewmodel) + implementation(libs.androidx.lifecycle.runtime) + implementation(libs.androidx.lifecycle.livedata) + implementation(libs.koin.android) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.recyclerview) + implementation(libs.androidx.constraintlayout) + implementation(libs.androidx.material) + implementation(libs.androidx.compose.material) + implementation(libs.androidx.compose.ui) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.compose.runtime.livedata) + implementation(libs.androidx.compose.material.icons.extended) + + testImplementation(libs.junit4) + testImplementation(libs.mockk.core) + testImplementation(libs.kotlin.test) + testImplementation(libs.coroutines.test) + testImplementation(libs.androidx.lifecycle.test) + testRuntimeOnly(libs.coroutines.test) + + androidTestImplementation(libs.mockk.android) + androidTestImplementation(libs.espresso.core) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.androidx.test.rules) } diff --git a/feature/task-list/public/build.gradle.kts b/feature/task-list/public/build.gradle.kts index c6b44b5b..ba38e2da 100644 --- a/feature/task-list/public/build.gradle.kts +++ b/feature/task-list/public/build.gradle.kts @@ -1,18 +1,8 @@ plugins { - id("java-library") - id("org.jetbrains.kotlin.jvm") -} - -java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -tasks.withType { - kotlinOptions.jvmTarget = "17" + id("todozy.jvm.library") } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.domain)) + implementation(projects.utility.kotlinUtil) + implementation(projects.domain) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 81d2d7a2..da9ed386 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,9 +1,9 @@ [versions] agp = "8.10.1" -kotlin = "1.9.22" -compileSdk = "36" -targetSdk = "35" -minSdk = "24" +kotlin = "1.9.25" +android-compileSdk = "36" +android-targetSdk = "35" +android-minSdk = "24" coroutines = "1.8.1" lifecycle = "2.7.0" lifecycleTesting = "2.2.0" @@ -37,9 +37,12 @@ soloader = "0.10.1" hilt = "2.51.1" hiltCompiler = "1.1.0" hiltNavCompose = "1.2.0" -compose = "1.6.7" +compose = "1.10.0" +composeMaterialIcons = "1.7.8" +composeCompiler = "1.5.15" composeActivity = "1.9.0" composeLifecycle = "2.7.0" +navigation = "2.7.7" desugar = "2.0.4" googleServices = "4.4.2" crashlyticsGradle = "2.9.9" @@ -104,7 +107,10 @@ desugar-jdk-libs = { module = "com.android.tools:desugar_jdk_libs", version.ref androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose" } androidx-compose-material = { module = "androidx.compose.material:material", version.ref = "compose" } +androidx-compose-material-icons-extended = { module = "androidx.compose.material:material-icons-extended", version.ref = "composeMaterialIcons" } androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "compose" } +androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata", version.ref = "compose" } +androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "compose" } androidx-compose-activity = { module = "androidx.activity:activity-compose", version.ref = "composeActivity" } androidx-compose-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "composeLifecycle" } androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hiltNavCompose" } @@ -115,6 +121,8 @@ hilt-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "hiltCom hilt-lifecycle-viewmodel = { module = "androidx.hilt:hilt-lifecycle-viewmodel", version.ref = "hiltCompiler" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "composeActivity" } +androidx-navigation-fragment-ktx = { module = "androidx.navigation:navigation-fragment-ktx", version.ref = "navigation" } +androidx-navigation-ui-ktx = { module = "androidx.navigation:navigation-ui-ktx", version.ref = "navigation" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } diff --git a/platform/impl/build.gradle.kts b/platform/impl/build.gradle.kts index 88cc4dbe..4bad0a07 100644 --- a/platform/impl/build.gradle.kts +++ b/platform/impl/build.gradle.kts @@ -1,54 +1,25 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") - id("com.google.firebase.crashlytics") + id("todozy.android.library.crashlytics") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.todozy.platform.impl" - - defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } - buildFeatures { - viewBinding = true - } } dependencies { - implementation(platform(Firebase.bom)) - implementation(project(Module.kotlinUtil)) - implementation(project(Module.androidUtil)) + implementation(platform(libs.firebase.bom)) + implementation(projects.utility.kotlinUtil) + implementation(projects.utility.androidUtil) - implementation(AndroidX.appcompat) - implementation(AndroidX.materialDesign) - implementation(Timber.timber) - implementation(Koin.android) - implementation(Firebase.core) - implementation(Firebase.crashlytics) - implementation(Firebase.analytics) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.material) + implementation(libs.timber) + implementation(libs.koin.android) + implementation(libs.firebase.core) + implementation(libs.firebase.crashlytics) + implementation(libs.firebase.analytics) - testImplementation(Junit.junit) + testImplementation(libs.junit4) - androidTestImplementation(AndroidXTest.espresso) + androidTestImplementation(libs.espresso.core) } diff --git a/settings.gradle.kts b/settings.gradle.kts index 20f38d0a..9d9b0686 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1,5 @@ +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") + pluginManagement { repositories { google() @@ -6,6 +8,8 @@ pluginManagement { } } +includeBuild("build-logic") + dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) repositories { diff --git a/ui-component/impl/build.gradle.kts b/ui-component/impl/build.gradle.kts index 8f089d3b..4bbdfa92 100644 --- a/ui-component/impl/build.gradle.kts +++ b/ui-component/impl/build.gradle.kts @@ -1,62 +1,34 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("todozy.android.library.compose") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.uicomponent.impl" - defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } buildFeatures { - compose = true viewBinding = true } - composeOptions { - kotlinCompilerExtensionVersion = Compose.Version.compiler - } } dependencies { - implementation(project(Module.kotlinUtil)) - implementation(project(Module.androidUtil)) - implementation(project(Module.uiComponentPublic)) - implementation(project(Module.domain)) - - implementation(AndroidX.appcompat) - implementation(AndroidX.recyclerview) - implementation(AndroidX.materialDesign) - implementation(Junit.junit) - implementation(Coroutines.test) - implementation(Koin.android) - implementation(Compose.ui) - implementation(Compose.material) - implementation(Compose.uiToolingPreview) - implementation(Compose.lifecycleRuntimeKtx) - testImplementation(Compose.uiTestJunit4) - - testImplementation(Junit.junit) - - androidTestImplementation(AndroidXTest.espresso) + implementation(projects.utility.kotlinUtil) + implementation(projects.utility.androidUtil) + implementation(projects.uiComponent.public) + implementation(projects.domain) + + implementation(libs.androidx.appcompat) + implementation(libs.androidx.recyclerview) + implementation(libs.androidx.material) + implementation(libs.junit4) + implementation(libs.coroutines.test) + implementation(libs.koin.android) + implementation(libs.androidx.compose.ui) + implementation(libs.androidx.compose.material) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.compose.lifecycle.runtime) + testImplementation(libs.androidx.compose.ui.test.junit4) + + testImplementation(libs.junit4) + + androidTestImplementation(libs.espresso.core) } diff --git a/ui-component/public/build.gradle.kts b/ui-component/public/build.gradle.kts index 15fe4855..50c71451 100644 --- a/ui-component/public/build.gradle.kts +++ b/ui-component/public/build.gradle.kts @@ -1,17 +1,7 @@ plugins { - id("java-library") - id("org.jetbrains.kotlin.jvm") -} - -java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -tasks.withType { - kotlinOptions.jvmTarget = "17" + id("todozy.jvm.library") } dependencies { - api(project(Module.domain)) + api(projects.domain) } diff --git a/utility/android-util/build.gradle.kts b/utility/android-util/build.gradle.kts index 095f2d6b..06817a90 100644 --- a/utility/android-util/build.gradle.kts +++ b/utility/android-util/build.gradle.kts @@ -1,50 +1,22 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("todozy.android.library") } android { - compileSdk = BuildVersion.compileSdk namespace = "br.com.sailboat.todozy.utility.android" - - defaultConfig { - minSdk = BuildVersion.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } - buildFeatures { - viewBinding = true - } } dependencies { - implementation(project(Module.kotlinUtil)) + implementation(projects.utility.kotlinUtil) - implementation(AndroidX.appcompat) - implementation(AndroidX.materialDesign) - implementation(AndroidX.recyclerview) - implementation(Coroutines.core) - implementation(Coroutines.android) - implementation(Koin.android) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.material) + implementation(libs.androidx.recyclerview) + implementation(libs.coroutines.core) + implementation(libs.coroutines.android) + implementation(libs.koin.android) - testImplementation(Junit.junit) + testImplementation(libs.junit4) - androidTestImplementation(AndroidXTest.espresso) + androidTestImplementation(libs.espresso.core) } diff --git a/utility/kotlin-util/build.gradle.kts b/utility/kotlin-util/build.gradle.kts index b983c665..28e70988 100644 --- a/utility/kotlin-util/build.gradle.kts +++ b/utility/kotlin-util/build.gradle.kts @@ -1,17 +1,7 @@ plugins { - id("java-library") - id("org.jetbrains.kotlin.jvm") -} - -java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -tasks.withType { - kotlinOptions.jvmTarget = "17" + id("todozy.jvm.library") } dependencies { - implementation(Coroutines.core) + implementation(libs.coroutines.core) } From 0e2da543de957fc916407d6af412ef0dfd9d52a3 Mon Sep 17 00:00:00 2001 From: Brayan Bedritchuk Date: Wed, 10 Dec 2025 09:34:38 -0300 Subject: [PATCH 2/3] Update agents.md --- AGENTS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/AGENTS.md b/AGENTS.md index d2542168..5841c48d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,6 +5,7 @@ - UI kit split into `ui-component/public` (contracts) and `ui-component/impl` (views/resources). Features live under `feature//{public,impl}` (task-list, task-form, task-history, task-details, alarm, settings, about, splash, navigation) with data/domain/presentation layers. - Platform integrations (DB, logging, Crashlytics) sit in `platform/impl`. Resources stay per module; non-transitive R is on, so import the correct module `R`. - Dependency aliases and SDK versions live in `gradle/libs.versions.toml`. Prefer those over hardcoded values; shared Gradle wiring sits in `build-logic` convention plugins (`todozy.*`). +- Whenever Codex is asked to make changes, it must present a plan first and wait for my explicit confirmation before coding. ## Build, Test, and Development Commands - `./gradlew assembleDebug` — builds with AGP 8.10.1, Kotlin 1.9.22, Java 17, compileSdk 36/targetSdk 35/minSdk 24. From bc0d17c9428ed49baad553abd8cfc0e85a6c08bb Mon Sep 17 00:00:00 2001 From: Brayan Bedritchuk Date: Wed, 10 Dec 2025 09:42:58 -0300 Subject: [PATCH 3/3] Remove unused import --- build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 0a95864b..6bfdaf62 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,7 +2,6 @@ import com.android.build.gradle.BaseExtension import org.gradle.api.GradleException import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.api.tasks.testing.logging.TestLogEvent -import org.gradle.kotlin.dsl.the plugins { alias(libs.plugins.android.application) apply false