Skip to content

Commit

Permalink
Merge pull request #100 from c0de-wizard/kmm-hirechical-structure-mig…
Browse files Browse the repository at this point in the history
…ration

Kmm hirechical structure migration
  • Loading branch information
thomaskioko authored Nov 4, 2023
2 parents 25ef3ae + d263032 commit 0a6e9ed
Show file tree
Hide file tree
Showing 93 changed files with 992 additions and 1,198 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 17
java-version: 18

- name: Setup Gradle
uses: gradle/[email protected]
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/kmm-bridge-spm-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ jobs:
call-kmmbridge-publish:
uses: touchlab/KMMBridgeGithubWorkflow/.github/workflows/[email protected]
with:
jvmVersion: 17
jvmVersion: 18
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ This is my playground for learning Kotlin Multiplatform. With that said, I'm sur
## 🖥 Project Setup & Environment

#### Requirements
- [Zulu Java 17](https://www.azul.com/downloads/?package=jdk#zulu)
- [Zulu Java 18](https://www.azul.com/downloads/?package=jdk#zulu)
- You require the latest [Android Studio](https://developer.android.com/studio/preview) release to be able to build the app.
- Install KMP Plugin. Checkout [this setup guide](https://kotlinlang.org/docs/multiplatform-mobile-setup.html).

Expand Down
2 changes: 1 addition & 1 deletion android-core/resources/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("tvmaniac.android.library")
id("plugin.tvmaniac.android.library")
}

android {
Expand Down
2 changes: 1 addition & 1 deletion android-core/workmanager/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("tvmaniac.android.library")
id("plugin.tvmaniac.android.library")
alias(libs.plugins.ksp)
}

Expand Down
16 changes: 0 additions & 16 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ plugins {
alias(libs.plugins.dependency.analysis) apply false
alias(libs.plugins.kmmbridge) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.kapt) apply false
alias(libs.plugins.ksp) apply false
alias(libs.plugins.multiplatform) apply false
alias(libs.plugins.serialization) apply false
Expand Down Expand Up @@ -40,18 +39,3 @@ allprojects {
tasks.register("clean", Delete::class) {
delete(rootProject.buildDir)
}

subprojects {
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
with(kotlinOptions) {
jvmTarget = JavaVersion.VERSION_17.toString()

freeCompilerArgs = freeCompilerArgs + listOf(
"-opt-in=kotlin.RequiresOptIn",
"-opt-in=kotlin.time.ExperimentalTime",
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
"-opt-in=kotlinx.coroutines.FlowPreview",
)
}
}
}
53 changes: 32 additions & 21 deletions core/database/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,41 +1,52 @@
plugins {
id("tvmaniac.kmm.library")
id("plugin.tvmaniac.kotlin.android")
id("plugin.tvmaniac.multiplatform")
alias(libs.plugins.sqldelight)
alias(libs.plugins.ksp)
}


kotlin {
android()
ios()

sourceSets {

sourceSets["androidMain"].dependencies {
implementation(libs.sqldelight.driver.android)
androidMain {
dependencies {
implementation(libs.sqldelight.driver.android)
}
}

sourceSets["commonMain"].dependencies {
implementation(projects.core.util)
implementation(libs.sqldelight.primitive.adapters)
implementation(libs.kotlinInject.runtime)
implementation(libs.kotlinx.datetime)
commonMain {
dependencies {
implementation(projects.core.util)
implementation(libs.sqldelight.primitive.adapters)
implementation(libs.kotlinInject.runtime)
implementation(libs.kotlinx.datetime)
}
}


sourceSets["androidUnitTest"].dependencies {
implementation(kotlin("test"))
implementation(libs.sqldelight.driver.jvm)
androidUnitTest {
dependencies {
implementation(kotlin("test"))
implementation(libs.sqldelight.driver.jvm)
}
}

commonTest {
dependencies {
implementation(kotlin("test"))
implementation(libs.kotest.assertions)
}
}

sourceSets["commonTest"].dependencies {
implementation(kotlin("test"))
implementation(libs.kotest.assertions)
iosMain {
dependencies {
implementation(libs.sqldelight.driver.native)
}
}

sourceSets["iosMain"].dependencies {
implementation(libs.sqldelight.driver.native)
jvmTest {
dependencies {
implementation(libs.sqldelight.driver.jvm)
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package com.thomaskioko.tvmaniac.db

actual interface DatabaseComponent
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.thomaskioko.tvmaniac.core.db

import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver

actual fun inMemorySqlDriver(): SqlDriver =
JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY).apply {
TvManiacDatabase.Schema.create(this)
}
31 changes: 13 additions & 18 deletions core/datastore/api/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,29 +1,24 @@
plugins {
id("tvmaniac.kmm.library")
id("plugin.tvmaniac.multiplatform")
}


kotlin {
android()
ios()

sourceSets {

sourceSets["commonMain"].dependencies {
api(libs.coroutines.core)
commonMain {
dependencies {
api(libs.coroutines.core)
}
}

sourceSets["commonTest"].dependencies {
implementation(kotlin("test"))
commonMain {
dependencies {
implementation(kotlin("test"))

implementation(libs.coroutines.test)
implementation(libs.kotest.assertions)
implementation(libs.turbine)
implementation(libs.coroutines.test)
implementation(libs.kotest.assertions)
implementation(libs.turbine)
}
}

}
}

android {
namespace = "com.thomaskioko.tvmaniac.shared.domain.datastore.api"
}
}
30 changes: 16 additions & 14 deletions core/datastore/implementation/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,29 +1,31 @@
plugins {
id("tvmaniac.kmm.library")
id("plugin.tvmaniac.kotlin.android")
id("plugin.tvmaniac.multiplatform")
alias(libs.plugins.ksp)
}


kotlin {
android()
ios()

sourceSets {
sourceSets["commonMain"].dependencies {
implementation(projects.core.datastore.api)
implementation(projects.core.util)
commonMain {
dependencies {
implementation(projects.core.datastore.api)
implementation(projects.core.util)

api(libs.androidx.datastore.preference)
api(libs.androidx.datastore.preference)

implementation(libs.kotlinInject.runtime)
implementation(libs.kotlinInject.runtime)
}
}

sourceSets["commonTest"].dependencies {
implementation(kotlin("test"))
commonTest {
dependencies {
implementation(kotlin("test"))

implementation(libs.coroutines.test)
implementation(libs.kotest.assertions)
implementation(libs.turbine)
implementation(libs.coroutines.test)
implementation(libs.kotest.assertions)
implementation(libs.turbine)
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import androidx.datastore.preferences.core.Preferences
import com.thomaskioko.tvmaniac.datastore.api.DatastoreRepository
import com.thomaskioko.tvmaniac.util.model.AppCoroutineScope
import com.thomaskioko.tvmaniac.util.scope.ApplicationScope
import kotlinx.cinterop.ExperimentalForeignApi
import me.tatarka.inject.annotations.Provides
import platform.Foundation.NSDocumentDirectory
import platform.Foundation.NSFileManager
Expand All @@ -13,6 +14,7 @@ import platform.Foundation.NSUserDomainMask

actual interface DataStorePlatformComponent {

@OptIn(ExperimentalForeignApi::class)
@ApplicationScope
@Provides
fun provideDataStore(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package com.thomaskioko.tvmaniac.datastore.implementation

actual interface DataStorePlatformComponent
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.thomaskioko.tvmaniac.datastore.implementation

@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
actual annotation class IgnoreIos()
19 changes: 7 additions & 12 deletions core/datastore/testing/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
plugins {
id("tvmaniac.kmm.library")
id("plugin.tvmaniac.multiplatform")
}


kotlin {
android()
ios()

sourceSets {
sourceSets["commonMain"].dependencies {
implementation(projects.core.datastore.api)
implementation(libs.coroutines.core)
commonMain {
dependencies {
implementation(projects.core.datastore.api)
implementation(libs.coroutines.core)
}
}
}
}

android {
namespace = "com.thomaskioko.tvmaniac.datastore.testing"
}
}
17 changes: 8 additions & 9 deletions core/networkutil/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
plugins {
id("tvmaniac.kmm.library")
id("plugin.tvmaniac.kotlin.android")
id("plugin.tvmaniac.multiplatform")
alias(libs.plugins.ksp)
}

kotlin {
android()
ios()

sourceSets {
commonMain {
dependencies {
implementation(projects.core.util)

sourceSets["commonMain"].dependencies {
implementation(projects.core.util)

implementation(libs.coroutines.core)
implementation(libs.kotlinInject.runtime)
implementation(libs.coroutines.core)
implementation(libs.kotlinInject.runtime)
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package com.thomaskioko.tvmaniac.core.networkutil.inject

actual interface NetworkPlatformComponent
20 changes: 7 additions & 13 deletions core/tmdb-api/api/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,23 +1,17 @@
plugins {
id("tvmaniac.kmm.library")
id("plugin.tvmaniac.multiplatform")
alias(libs.plugins.serialization)
}

kotlin {
android()
ios()

sourceSets {
sourceSets["commonMain"].dependencies {
api(projects.core.database)
api(projects.core.networkutil)
commonMain {
dependencies {
api(projects.core.database)
api(projects.core.networkutil)

implementation(libs.ktor.serialization)
implementation(libs.ktor.serialization)
}
}

}
}

android {
namespace = "com.thomaskioko.tvmaniac.tmdb.api"
}
Loading

0 comments on commit 0a6e9ed

Please sign in to comment.