Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactoring Gradle Code #66

Merged
merged 5 commits into from
Sep 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions src/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ dependencies {

implementation(libs.timber)

// Koin
// Hilt
implementation(libs.hilt.android)
kapt(libs.hilt.android.compiler)

Expand All @@ -81,11 +81,8 @@ dependencies {

// Compose
implementation(platform(libs.compose.bom))
implementation(libs.compose.bom.ui)
implementation(libs.compose.bom.preview)
implementation(libs.compose.bom.activity)
debugImplementation(libs.compose.bom.ui.tooling)
debugImplementation(libs.compose.bom.ui.test.manifest)
implementation(libs.bundles.compose.impl)
debugImplementation(libs.bundles.compose.debug.impl)
implementation(libs.bundles.compose.extras)

// Navigation
Expand Down
64 changes: 33 additions & 31 deletions src/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import com.android.build.gradle.LibraryExtension
import com.android.build.gradle.LibraryPlugin

plugins {
id("com.google.devtools.ksp") version "1.8.10-1.0.9" apply false
id("com.google.dagger.hilt.android") version "2.44" apply false
id("org.jlleitschuh.gradle.ktlint") version "11.5.1"
alias(libs.plugins.ksp) apply false
alias(libs.plugins.hilt) apply false
alias(libs.plugins.ktlint)
}

buildscript {
Expand All @@ -33,13 +33,15 @@ allprojects {

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class.java).configureEach {
kotlinOptions {
jvmTarget = ConfigData.JAVA_VM_TARGET
jvmTarget = Config.javaVMTarget
}
}
}

val ktLintPluginId: String = libs.plugins.ktlint.get().pluginId

subprojects {
apply(plugin = "org.jlleitschuh.gradle.ktlint") // Version should be inherited from parent
apply(plugin = ktLintPluginId) // Version should be inherited from parent

// Accessing the `PluginContainer` in order to use `whenPluginAdded` function
project.plugins.configure(project = project)
Expand Down Expand Up @@ -75,18 +77,18 @@ fun PluginContainer.configure(project: Project) {

// Extension function on `AppExtension`
fun AppExtension.applyCommons() {
compileSdkVersion(ConfigData.COMPILE_SDK)
compileSdkVersion(Config.compileSdk)

defaultConfig {
minSdk = ConfigData.MIN_SDK
targetSdk = ConfigData.TARGET_SDK
versionCode = ConfigData.versionCode()
versionName = ConfigData.versionName()
minSdk = Config.minSdk
targetSdk = Config.targetSdk
versionCode = Config.versionCode()
versionName = Config.versionName()

testInstrumentationRunner = ConfigData.TEST_INSTRUMENTATION_RUNNER
testInstrumentationRunner = Config.testInstrumentationRunner
vectorDrawables.useSupportLibrary = true

applicationId = ConfigData.APPLICATION_ID
applicationId = Config.applicationId

vectorDrawables.useSupportLibrary = true

Expand All @@ -102,30 +104,30 @@ fun AppExtension.applyCommons() {
}

compileOptions {
sourceCompatibility = ConfigData.JAVA_COMPATIBILITY_VERSION
targetCompatibility = ConfigData.JAVA_COMPATIBILITY_VERSION
sourceCompatibility = Config.javaCompatibilityVersion
targetCompatibility = Config.javaCompatibilityVersion
}

buildFeatures.compose = true

namespace = ConfigData.APPLICATION_ID
namespace = Config.applicationId
}

// Extension function on `LibraryExtension`
fun LibraryExtension.applyCommons() {
compileSdk = ConfigData.COMPILE_SDK
compileSdk = Config.compileSdk

defaultConfig {
minSdk = ConfigData.MIN_SDK
minSdk = Config.minSdk
}

composeOptions {
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
}

compileOptions {
sourceCompatibility = ConfigData.JAVA_COMPATIBILITY_VERSION
targetCompatibility = ConfigData.JAVA_COMPATIBILITY_VERSION
sourceCompatibility = Config.javaCompatibilityVersion
targetCompatibility = Config.javaCompatibilityVersion
}

testOptions {
Expand All @@ -139,24 +141,24 @@ tasks.register("clean", Delete::class) {
delete(rootProject.buildDir)
}

object ConfigData {
const val APPLICATION_ID = "com.gabrielbmoro.moviedb"
const val MIN_SDK = 22
const val TARGET_SDK = 33
const val COMPILE_SDK = 33
private const val LOCAL_VERSION_CODE = 10
private const val LOCAL_VERSION_NAME = "1.0.0"
val JAVA_COMPATIBILITY_VERSION = JavaVersion.VERSION_17
const val JAVA_VM_TARGET = "17"
const val TEST_INSTRUMENTATION_RUNNER = "androidx.test.runner.AndroidJUnitRunner"
object Config {
const val applicationId = "com.gabrielbmoro.moviedb"
const val minSdk = 22
const val targetSdk = 33
const val compileSdk = 33
private const val localVersionCode = 10
private const val localVersionName = "1.0.0"
val javaCompatibilityVersion = JavaVersion.VERSION_17
const val javaVMTarget = "17"
const val testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

fun versionCode(): Int {
val versionCode = try {
System.getenv("BITRISE_BUILD_NUMBER").toIntOrNull()
} catch (nullPointerException: NullPointerException) {
null
}
return versionCode ?: LOCAL_VERSION_CODE
return versionCode ?: localVersionCode
}

fun versionName(): String {
Expand All @@ -166,6 +168,6 @@ object ConfigData {
null
}

return versionName?.ifEmpty { LOCAL_VERSION_NAME } ?: LOCAL_VERSION_NAME
return versionName?.ifEmpty { localVersionName } ?: localVersionName
}
}
9 changes: 3 additions & 6 deletions src/core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,16 @@ dependencies {
androidTestImplementation(libs.androidx.test.ext.junit)
androidTestImplementation(libs.espresso.core)

// Koin
// Hilt
implementation(libs.hilt.android)
kapt(libs.hilt.android.compiler)

implementation(libs.timber)

// Compose
implementation(platform(libs.compose.bom))
implementation(libs.compose.bom.ui)
implementation(libs.compose.bom.preview)
implementation(libs.compose.bom.activity)
debugImplementation(libs.compose.bom.ui.tooling)
debugImplementation(libs.compose.bom.ui.test.manifest)
implementation(libs.bundles.compose.impl)
debugImplementation(libs.bundles.compose.debug.impl)
implementation(libs.bundles.compose.extras)

// Coil
Expand Down
7 changes: 2 additions & 5 deletions src/feature_details/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,8 @@ dependencies {

// Compose
implementation(platform(libs.compose.bom))
implementation(libs.compose.bom.ui)
implementation(libs.compose.bom.preview)
implementation(libs.compose.bom.activity)
debugImplementation(libs.compose.bom.ui.tooling)
debugImplementation(libs.compose.bom.ui.test.manifest)
implementation(libs.bundles.compose.impl)
debugImplementation(libs.bundles.compose.debug.impl)
implementation(libs.bundles.compose.extras)

// Player
Expand Down
7 changes: 2 additions & 5 deletions src/feature_movies/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,8 @@ dependencies {

// Compose
implementation(platform(libs.compose.bom))
implementation(libs.compose.bom.ui)
implementation(libs.compose.bom.preview)
implementation(libs.compose.bom.activity)
debugImplementation(libs.compose.bom.ui.tooling)
debugImplementation(libs.compose.bom.ui.test.manifest)
implementation(libs.bundles.compose.impl)
debugImplementation(libs.bundles.compose.debug.impl)
implementation(libs.bundles.compose.extras)

implementation(libs.bundles.lifecycle)
Expand Down
7 changes: 2 additions & 5 deletions src/feature_wishlist/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,8 @@ dependencies {

// Compose
implementation(platform(libs.compose.bom))
implementation(libs.compose.bom.ui)
implementation(libs.compose.bom.preview)
implementation(libs.compose.bom.activity)
debugImplementation(libs.compose.bom.ui.tooling)
debugImplementation(libs.compose.bom.ui.test.manifest)
implementation(libs.bundles.compose.impl)
debugImplementation(libs.bundles.compose.debug.impl)
implementation(libs.bundles.compose.extras)

// Test
Expand Down
10 changes: 8 additions & 2 deletions src/gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ core-ktx = "1.10.1"
androidx-test-ext-junit = "1.1.5"
espresso-core = "3.5.1"
material = "1.9.0"
ktlint_plugin = "11.5.1"
ksp = "1.8.10-1.0.9"

[libraries]
androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hilt-navigation-compose" }
Expand Down Expand Up @@ -100,9 +102,13 @@ room = ["room_ktx", "room_runtime"]
lifecycle = ["lifecycle_livedata_ktx", "lifecycle_extensions", "lifecycle_viewmodel_ktx", "lifecycle_compose_runtime"]
test = ["junit", "arc_core_common", "arc_core_runtime", "arc_core_testing", "truth", "mockk", "kotlinx_coroutines_test"]
compose_extras = ["compose_material_3", "navigation_compose", "paging_compose"]
compose_impl = ["compose_bom_ui", "compose_bom_preview", "compose_bom_activity"]
compose_debug_impl = ["compose_bom_ui_tooling", "compose_bom_ui_test_manifest"]

retrofit = ["retrofit", "retrofit_converter_json", "gson"]
hilt = ["hilt-android", "androidx-hilt-navigation-compose"]

[plugins]
androidLibrary = { id = "com.android.library", version.ref = "agp" }
kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin1810" }
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint_plugin" }
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt-android" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
4 changes: 2 additions & 2 deletions src/repository/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ plugins {
id("com.android.library")
kotlin("android")
kotlin("kapt")
id("com.google.devtools.ksp")
alias(libs.plugins.ksp)
id("kotlin-parcelize")
}

Expand All @@ -23,7 +23,7 @@ dependencies {

implementation(libs.paging.compose)

// Koin
// Hilt
implementation(libs.hilt.android)
kapt(libs.hilt.android.compiler)

Expand Down