From 64d07e6460e2c9c4fa364f654ea620acd204dc5c Mon Sep 17 00:00:00 2001 From: Thomas Kioko Date: Thu, 2 Nov 2023 19:59:54 +0100 Subject: [PATCH 1/6] Update build logic plugins. --- android-core/resources/build.gradle.kts | 2 +- android-core/workmanager/build.gradle.kts | 2 +- build.gradle.kts | 16 ----- tooling/plugins/build.gradle.kts | 22 +++---- .../src/main/kotlin/AndroidLibraryPlugin.kt | 35 ----------- .../kotlin/KotlinMultiplatformDomainPlugin.kt | 50 --------------- .../KotlinMultiplatformLibraryPlugin.kt | 30 --------- .../tvmaniac/extensions/Android.kt | 30 +++++++++ .../tvmaniac/extensions/ComposeExtensions.kt | 21 +++---- .../thomaskioko/tvmaniac/extensions/Java.kt | 16 +++++ .../thomaskioko/tvmaniac/extensions/Kotlin.kt | 7 +++ .../extensions/KotlinAndroidExtensions.kt | 61 ------------------- .../KotlinMultiplatformExtensions.kt | 31 ---------- .../tvmaniac/extensions/VersionCatalog.kt | 9 +++ .../tvmaniac/extensions/Versions.kt | 7 +++ .../tvmaniac/plugins/AndroidLibraryPlugin.kt | 17 ++++++ .../tvmaniac/plugins}/ApplicationPlugin.kt | 18 +++--- .../tvmaniac/plugins}/ComposeLibraryPlugin.kt | 11 ++-- .../tvmaniac/plugins}/FeaturePlugin.kt | 2 +- .../KotlinMultiplatformConventionPlugin.kt | 60 ++++++++++++++++++ 20 files changed, 178 insertions(+), 269 deletions(-) delete mode 100644 tooling/plugins/src/main/kotlin/AndroidLibraryPlugin.kt delete mode 100644 tooling/plugins/src/main/kotlin/KotlinMultiplatformDomainPlugin.kt delete mode 100644 tooling/plugins/src/main/kotlin/KotlinMultiplatformLibraryPlugin.kt create mode 100644 tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Android.kt create mode 100644 tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Java.kt create mode 100644 tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Kotlin.kt delete mode 100644 tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/KotlinAndroidExtensions.kt delete mode 100644 tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/KotlinMultiplatformExtensions.kt create mode 100644 tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/VersionCatalog.kt create mode 100644 tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Versions.kt create mode 100644 tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/AndroidLibraryPlugin.kt rename tooling/plugins/src/main/kotlin/{ => com/thomaskioko/tvmaniac/plugins}/ApplicationPlugin.kt (70%) rename tooling/plugins/src/main/kotlin/{ => com/thomaskioko/tvmaniac/plugins}/ComposeLibraryPlugin.kt (67%) rename tooling/plugins/src/main/kotlin/{ => com/thomaskioko/tvmaniac/plugins}/FeaturePlugin.kt (98%) create mode 100644 tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/KotlinMultiplatformConventionPlugin.kt diff --git a/android-core/resources/build.gradle.kts b/android-core/resources/build.gradle.kts index 6ce6c69d7..df71968ba 100644 --- a/android-core/resources/build.gradle.kts +++ b/android-core/resources/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("tvmaniac.android.library") + id("plugin.tvmaniac.android.library") } android { diff --git a/android-core/workmanager/build.gradle.kts b/android-core/workmanager/build.gradle.kts index 5557d5e26..5d2be9979 100644 --- a/android-core/workmanager/build.gradle.kts +++ b/android-core/workmanager/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("tvmaniac.android.library") + id("plugin.tvmaniac.android.library") alias(libs.plugins.ksp) } diff --git a/build.gradle.kts b/build.gradle.kts index 4804e691c..77ef8136b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -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 @@ -40,18 +39,3 @@ allprojects { tasks.register("clean", Delete::class) { delete(rootProject.buildDir) } - -subprojects { - tasks.withType().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", - ) - } - } -} diff --git a/tooling/plugins/build.gradle.kts b/tooling/plugins/build.gradle.kts index b2b2497ae..565fc94e5 100644 --- a/tooling/plugins/build.gradle.kts +++ b/tooling/plugins/build.gradle.kts @@ -20,29 +20,25 @@ dependencies { gradlePlugin { plugins { + register("kotlinMultiplatformPlugin") { + id = "plugin.tvmaniac.multiplatform" + implementationClass = "com.thomaskioko.tvmaniac.plugins.KotlinMultiplatformConventionPlugin" + } register("androidApplication") { id = "tvmaniac.application" - implementationClass = "ApplicationPlugin" + implementationClass = "com.thomaskioko.tvmaniac.plugins.ApplicationPlugin" } register("androidLibrary") { - id = "tvmaniac.android.library" - implementationClass = "AndroidLibraryPlugin" + id = "plugin.tvmaniac.android.library" + implementationClass = "com.thomaskioko.tvmaniac.plugins.AndroidLibraryPlugin" } register("androidComposeLibrary") { id = "tvmaniac.compose.library" - implementationClass = "ComposeLibraryPlugin" + implementationClass = "com.thomaskioko.tvmaniac.plugins.ComposeLibraryPlugin" } register("androidFeature") { id = "tvmaniac.android.feature" - implementationClass = "FeaturePlugin" - } - register("kmmDomain") { - id = "tvmaniac.kmm.domain" - implementationClass = "KotlinMultiplatformDomainPlugin" - } - register("kmmLibrary") { - id = "tvmaniac.kmm.library" - implementationClass = "KotlinMultiplatformLibraryPlugin" + implementationClass = "com.thomaskioko.tvmaniac.plugins.FeaturePlugin" } } } diff --git a/tooling/plugins/src/main/kotlin/AndroidLibraryPlugin.kt b/tooling/plugins/src/main/kotlin/AndroidLibraryPlugin.kt deleted file mode 100644 index 5e29cb33d..000000000 --- a/tooling/plugins/src/main/kotlin/AndroidLibraryPlugin.kt +++ /dev/null @@ -1,35 +0,0 @@ -import com.android.build.gradle.LibraryExtension -import com.thomaskioko.tvmaniac.extensions.configureFlavors -import com.thomaskioko.tvmaniac.extensions.configureKotlinAndroid -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.getByType - -class AndroidLibraryPlugin : Plugin { - override fun apply(target: Project) { - with(target) { - with(pluginManager) { - apply("com.android.library") - apply("org.jetbrains.kotlin.android") - } - - extensions.configure { - val libs = extensions.getByType().named("libs") - val sdkVersion = libs.findVersion("android-compileSdk") - .get().toString().toInt() - - configureKotlinAndroid(this) - configureFlavors(this) - defaultConfig.targetSdk = sdkVersion - } - - configurations.configureEach { - resolutionStrategy {} - } - dependencies {} - } - } -} diff --git a/tooling/plugins/src/main/kotlin/KotlinMultiplatformDomainPlugin.kt b/tooling/plugins/src/main/kotlin/KotlinMultiplatformDomainPlugin.kt deleted file mode 100644 index faa4d9084..000000000 --- a/tooling/plugins/src/main/kotlin/KotlinMultiplatformDomainPlugin.kt +++ /dev/null @@ -1,50 +0,0 @@ - -import com.android.build.gradle.LibraryExtension -import org.gradle.api.JavaVersion -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.getByType -import org.gradle.kotlin.dsl.kotlin - -class KotlinMultiplatformDomainPlugin : Plugin { - override fun apply(target: Project) { - with(target) { - with(pluginManager) { - apply("tvmaniac.kmm.library") - apply("com.google.devtools.ksp") - } - - extensions.configure { - val libs = extensions.getByType().named("libs") - val sdkVersion = libs.findVersion("android-compileSdk") - .get().toString().toInt() - - defaultConfig.targetSdk = 34 - compileSdk = sdkVersion - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - } - - - val libs = extensions.getByType().named("libs") - - dependencies { - - add("commonMainApi", libs.findLibrary("flowredux").get()) - add("commonMainImplementation", libs.findLibrary("coroutines-core").get()) - add("commonMainImplementation", libs.findLibrary("kotlinInject.runtime").get()) - - add("commonTestImplementation", (kotlin("test"))) - add("commonTestImplementation", libs.findLibrary("coroutines-test").get()) - add("commonTestImplementation", libs.findLibrary("kotest-assertions").get()) - add("commonTestImplementation", libs.findLibrary("turbine").get()) - - } - } - } -} \ No newline at end of file diff --git a/tooling/plugins/src/main/kotlin/KotlinMultiplatformLibraryPlugin.kt b/tooling/plugins/src/main/kotlin/KotlinMultiplatformLibraryPlugin.kt deleted file mode 100644 index 7229f5b7b..000000000 --- a/tooling/plugins/src/main/kotlin/KotlinMultiplatformLibraryPlugin.kt +++ /dev/null @@ -1,30 +0,0 @@ -import com.android.build.gradle.LibraryExtension -import com.thomaskioko.tvmaniac.extensions.configureFlavors -import com.thomaskioko.tvmaniac.extensions.configureKotlinMultiplatform -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.getByType - -class KotlinMultiplatformLibraryPlugin : Plugin { - override fun apply(target: Project) { - with(target) { - with(pluginManager) { - apply("org.jetbrains.kotlin.multiplatform") - apply("com.android.library") - } - - extensions.configure { - val libs = extensions.getByType().named("libs") - val sdkVersion = libs.findVersion("android-compileSdk") - .get().toString().toInt() - - configureKotlinMultiplatform(this) - defaultConfig.targetSdk = sdkVersion - configureFlavors(this) - } - - } - } -} \ No newline at end of file diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Android.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Android.kt new file mode 100644 index 000000000..7ba01d855 --- /dev/null +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Android.kt @@ -0,0 +1,30 @@ +package com.thomaskioko.tvmaniac.extensions + +import com.android.build.gradle.BaseExtension +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.dependencies + +fun Project.configureAndroid() { + android { + compileSdkVersion(Versions.COMPILE_SDK) + + defaultConfig { + minSdk = Versions.MIN_SDK + targetSdk = Versions.TARGET_SDK + manifestPlaceholders["appAuthRedirectScheme"] = "empty" + } + + compileOptions { + isCoreLibraryDesugaringEnabled = true + } + + } + + dependencies { + "coreLibraryDesugaring"(libs.findLibrary("android.desugarJdkLibs").get()) + } +} + +fun Project.android(action: BaseExtension.() -> Unit) = extensions.configure(action) + diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/ComposeExtensions.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/ComposeExtensions.kt index 28f99e96d..6a474cc86 100644 --- a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/ComposeExtensions.kt +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/ComposeExtensions.kt @@ -3,28 +3,23 @@ package com.thomaskioko.tvmaniac.extensions import com.android.build.api.dsl.CommonExtension import org.gradle.api.JavaVersion import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.api.plugins.ExtensionAware import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.getByType +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions internal fun Project.configureAndroidCompose( commonExtension: CommonExtension<*, *, *, *, *>, ) { - val libs = extensions.getByType().named("libs") - commonExtension.apply { defaultConfig { - val libs = extensions.getByType().named("libs") - val minSdkSdkVersion = libs.findVersion("android-minSdk").get().toString().toInt() - - minSdk = minSdkSdkVersion + minSdk = Versions.MIN_SDK } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_18 + targetCompatibility = JavaVersion.VERSION_18 } buildFeatures { @@ -39,8 +34,6 @@ internal fun Project.configureAndroidCompose( freeCompilerArgs = freeCompilerArgs } - val libs = extensions.getByType().named("libs") - dependencies { val bom = libs.findLibrary("androidx-compose-bom").get() @@ -49,3 +42,7 @@ internal fun Project.configureAndroidCompose( } } } + +fun CommonExtension<*, *, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) { + (this as ExtensionAware).extensions.configure("kotlinOptions", block) +} \ No newline at end of file diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Java.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Java.kt new file mode 100644 index 000000000..491d093cd --- /dev/null +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Java.kt @@ -0,0 +1,16 @@ +package com.thomaskioko.tvmaniac.extensions + +import org.gradle.api.Project +import org.gradle.api.plugins.JavaPluginExtension +import org.gradle.jvm.toolchain.JavaLanguageVersion +import org.gradle.kotlin.dsl.configure + +fun Project.configureJava() { + java { + toolchain { + languageVersion.set(JavaLanguageVersion.of(18)) + } + } +} + +private fun Project.java(action: JavaPluginExtension.() -> Unit) = extensions.configure(action) diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Kotlin.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Kotlin.kt new file mode 100644 index 000000000..090d5a830 --- /dev/null +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Kotlin.kt @@ -0,0 +1,7 @@ +package com.thomaskioko.tvmaniac.extensions + +import org.gradle.api.Project + +fun Project.configureKotlin() { + configureJava() +} diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/KotlinAndroidExtensions.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/KotlinAndroidExtensions.kt deleted file mode 100644 index 21ec49981..000000000 --- a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/KotlinAndroidExtensions.kt +++ /dev/null @@ -1,61 +0,0 @@ -package com.thomaskioko.tvmaniac.extensions - -import com.android.build.api.dsl.CommonExtension -import org.gradle.api.JavaVersion -import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.api.plugins.ExtensionAware -import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.getByType -import org.gradle.kotlin.dsl.provideDelegate -import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions - -internal fun Project.configureKotlinAndroid( - commonExtension: CommonExtension<*, *, *, *, *>, -) { - - commonExtension.apply { - val libs = extensions.getByType().named("libs") - val sdkVersion = libs.findVersion("android-compileSdk").get().toString().toInt() - val minSdkVersion = libs.findVersion("android-minSdk").get().toString().toInt() - - compileSdk = sdkVersion - - defaultConfig { - minSdk = minSdkVersion - manifestPlaceholders["appAuthRedirectScheme"] = "empty" - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - isCoreLibraryDesugaringEnabled = true - } - - - - kotlinOptions { - val warningsAsErrors: String? by project - allWarningsAsErrors = warningsAsErrors.toBoolean() - - freeCompilerArgs = freeCompilerArgs + listOf( - "-opt-in=kotlin.RequiresOptIn", - "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", - "-opt-in=kotlinx.coroutines.FlowPreview", - "-opt-in=kotlin.Experimental", - ) - - jvmTarget = JavaVersion.VERSION_17.toString() - } - } - - val libs = extensions.getByType().named("libs") - - dependencies { - add("coreLibraryDesugaring", libs.findLibrary("android.desugarJdkLibs").get()) - } -} - -fun CommonExtension<*, *, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) { - (this as ExtensionAware).extensions.configure("kotlinOptions", block) -} diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/KotlinMultiplatformExtensions.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/KotlinMultiplatformExtensions.kt deleted file mode 100644 index 497241258..000000000 --- a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/KotlinMultiplatformExtensions.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.thomaskioko.tvmaniac.extensions - -import com.android.build.api.dsl.CommonExtension -import org.gradle.api.JavaVersion -import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.kotlin.dsl.getByType - -@Suppress("UnstableApiUsage") -internal fun Project.configureKotlinMultiplatform( - commonExtension: CommonExtension<*, *, *, *, *>, -) { - commonExtension.apply { - val libs = extensions.getByType().named("libs") - val minSdkSdkVersion = libs.findVersion("android-minSdk").get().toString().toInt() - val sdkVersion = libs.findVersion("android-compileSdk") - .get().toString().toInt() - - defaultConfig { - minSdk = minSdkSdkVersion - compileSdk = sdkVersion - manifestPlaceholders["appAuthRedirectScheme"] = "empty" - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - } -} - diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/VersionCatalog.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/VersionCatalog.kt new file mode 100644 index 000000000..5d34748e3 --- /dev/null +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/VersionCatalog.kt @@ -0,0 +1,9 @@ +package com.thomaskioko.tvmaniac.extensions + +import org.gradle.api.Project +import org.gradle.api.artifacts.VersionCatalog +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.getByType + +internal val Project.libs: VersionCatalog + get() = extensions.getByType().named("libs") diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Versions.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Versions.kt new file mode 100644 index 000000000..ef63b3a15 --- /dev/null +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Versions.kt @@ -0,0 +1,7 @@ +package com.thomaskioko.tvmaniac.extensions + +object Versions { + const val COMPILE_SDK = 34 + const val MIN_SDK = 21 + const val TARGET_SDK = 34 +} \ No newline at end of file diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/AndroidLibraryPlugin.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/AndroidLibraryPlugin.kt new file mode 100644 index 000000000..429dd4160 --- /dev/null +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/AndroidLibraryPlugin.kt @@ -0,0 +1,17 @@ +package com.thomaskioko.tvmaniac.plugins + +import com.thomaskioko.tvmaniac.extensions.configureAndroid +import org.gradle.api.Plugin +import org.gradle.api.Project + +class AndroidLibraryPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.android.library") + } + + configureAndroid() + } + } +} \ No newline at end of file diff --git a/tooling/plugins/src/main/kotlin/ApplicationPlugin.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/ApplicationPlugin.kt similarity index 70% rename from tooling/plugins/src/main/kotlin/ApplicationPlugin.kt rename to tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/ApplicationPlugin.kt index 82ce5b492..ca0e46c0d 100644 --- a/tooling/plugins/src/main/kotlin/ApplicationPlugin.kt +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/ApplicationPlugin.kt @@ -1,16 +1,16 @@ +package com.thomaskioko.tvmaniac.plugins + import com.android.build.api.dsl.ApplicationExtension +import com.thomaskioko.tvmaniac.extensions.FlavorDimension import com.thomaskioko.tvmaniac.extensions.TvManiacFlavor +import com.thomaskioko.tvmaniac.extensions.Versions +import com.thomaskioko.tvmaniac.extensions.configureAndroid import com.thomaskioko.tvmaniac.extensions.configureAndroidCompose import com.thomaskioko.tvmaniac.extensions.configureFlavors -import com.thomaskioko.tvmaniac.extensions.configureKotlinAndroid -import com.thomaskioko.tvmaniac.extensions.FlavorDimension import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.getByType -@Suppress("UnstableApiUsage") class ApplicationPlugin : Plugin { override fun apply(target: Project) { @@ -21,12 +21,8 @@ class ApplicationPlugin : Plugin { } extensions.configure { - val libs = extensions.getByType().named("libs") - val sdkVersion = libs.findVersion("android-compileSdk") - .get().toString().toInt() - defaultConfig { - targetSdk = sdkVersion + targetSdk = Versions.TARGET_SDK missingDimensionStrategy( FlavorDimension.contentType.name, TvManiacFlavor.demo.name @@ -37,7 +33,7 @@ class ApplicationPlugin : Plugin { buildConfig = true } - configureKotlinAndroid(this) + configureAndroid() configureAndroidCompose(this) configureFlavors(this) } diff --git a/tooling/plugins/src/main/kotlin/ComposeLibraryPlugin.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/ComposeLibraryPlugin.kt similarity index 67% rename from tooling/plugins/src/main/kotlin/ComposeLibraryPlugin.kt rename to tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/ComposeLibraryPlugin.kt index c54352a9f..771429261 100644 --- a/tooling/plugins/src/main/kotlin/ComposeLibraryPlugin.kt +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/ComposeLibraryPlugin.kt @@ -1,11 +1,12 @@ +package com.thomaskioko.tvmaniac.plugins + import com.android.build.gradle.LibraryExtension +import com.thomaskioko.tvmaniac.extensions.Versions import com.thomaskioko.tvmaniac.extensions.configureAndroidCompose import com.thomaskioko.tvmaniac.extensions.configureFlavors import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.getByType class ComposeLibraryPlugin : Plugin { override fun apply(target: Project) { @@ -17,11 +18,7 @@ class ComposeLibraryPlugin : Plugin { } extensions.configure { - val libs = extensions.getByType().named("libs") - val sdkVersion = libs.findVersion("android-compileSdk") - .get().toString().toInt() - - compileSdk = sdkVersion + compileSdk = Versions.COMPILE_SDK configureAndroidCompose(this) configureFlavors(this) diff --git a/tooling/plugins/src/main/kotlin/FeaturePlugin.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/FeaturePlugin.kt similarity index 98% rename from tooling/plugins/src/main/kotlin/FeaturePlugin.kt rename to tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/FeaturePlugin.kt index d7fb5177a..0176922c4 100644 --- a/tooling/plugins/src/main/kotlin/FeaturePlugin.kt +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/FeaturePlugin.kt @@ -1,4 +1,4 @@ - +package com.thomaskioko.tvmaniac.plugins import com.android.build.gradle.LibraryExtension import org.gradle.api.Plugin import org.gradle.api.Project diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/KotlinMultiplatformConventionPlugin.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/KotlinMultiplatformConventionPlugin.kt new file mode 100644 index 000000000..51214b501 --- /dev/null +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/KotlinMultiplatformConventionPlugin.kt @@ -0,0 +1,60 @@ +package com.thomaskioko.tvmaniac.plugins + +import com.thomaskioko.tvmaniac.extensions.configureKotlin +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.withType +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget + +@OptIn(ExperimentalKotlinGradlePluginApi::class) +class KotlinMultiplatformConventionPlugin : Plugin { + override fun apply(target: Project) = with(target) { + with(pluginManager) { + apply("org.jetbrains.kotlin.multiplatform") + } + + extensions.configure { + targetHierarchy.default() + + if (pluginManager.hasPlugin("com.android.library")) { + androidTarget() + } + + jvm() + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ).forEach { target -> + target.binaries.framework { + baseName = path.substring(1).replace(':', '-') + } + } + + targets.withType().configureEach { + compilations.configureEach { + compilerOptions.configure { + freeCompilerArgs.add("-Xallocator=custom") + freeCompilerArgs.add("-XXLanguage:+ImplicitSignedToUnsignedIntegerConversion") + freeCompilerArgs.add("-Xadd-light-debug=enable") + + freeCompilerArgs.addAll( + "-opt-in=kotlin.RequiresOptIn", + "-opt-in=kotlin.time.ExperimentalTime", + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + "-opt-in=kotlinx.coroutines.FlowPreview", + "-opt-in=kotlinx.cinterop.ExperimentalForeignApi", + "-opt-in=kotlinx.cinterop.BetaInteropApi", + ) + } + } + } + + configureKotlin() + } + } +} \ No newline at end of file From 2973100581dbc52a778710ae69070a7eb5273f5f Mon Sep 17 00:00:00 2001 From: Thomas Kioko Date: Thu, 2 Nov 2023 20:04:38 +0100 Subject: [PATCH 2/6] Add JVM platform interfaces. --- .../com/thomaskioko/tvmaniac/db/DatabaseComponent.kt | 3 +++ .../com/thomaskioko/tvmaniac/core/db/BaseDatabaseTest.kt | 9 +++++++++ .../implementation/DataStorePlatformComponent.kt | 2 ++ .../implementation/DataStorePlatformComponent.kt | 3 +++ .../tvmaniac/datastore/implementation/IgnoreIos.kt | 4 ++++ .../core/networkutil/inject/NetworkPlatformComponent.kt | 3 +++ .../tmdb/implementation/TmdbPlatformComponent.kt | 3 +++ .../thomaskioko/tvmaniac/util/BundleResourceReader.kt | 2 ++ .../tvmaniac/util/inject/UtilPlatformComponent.kt | 3 +++ 9 files changed, 32 insertions(+) create mode 100644 core/database/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/db/DatabaseComponent.kt create mode 100644 core/database/src/jvmTest/kotlin/com/thomaskioko/tvmaniac/core/db/BaseDatabaseTest.kt create mode 100644 core/datastore/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/datastore/implementation/DataStorePlatformComponent.kt create mode 100644 core/datastore/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/datastore/implementation/IgnoreIos.kt create mode 100644 core/networkutil/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/core/networkutil/inject/NetworkPlatformComponent.kt create mode 100644 core/tmdb-api/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/tmdb/implementation/TmdbPlatformComponent.kt create mode 100644 core/util/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/util/inject/UtilPlatformComponent.kt diff --git a/core/database/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/db/DatabaseComponent.kt b/core/database/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/db/DatabaseComponent.kt new file mode 100644 index 000000000..92f1b2bea --- /dev/null +++ b/core/database/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/db/DatabaseComponent.kt @@ -0,0 +1,3 @@ +package com.thomaskioko.tvmaniac.db + +actual interface DatabaseComponent \ No newline at end of file diff --git a/core/database/src/jvmTest/kotlin/com/thomaskioko/tvmaniac/core/db/BaseDatabaseTest.kt b/core/database/src/jvmTest/kotlin/com/thomaskioko/tvmaniac/core/db/BaseDatabaseTest.kt new file mode 100644 index 000000000..453e826f7 --- /dev/null +++ b/core/database/src/jvmTest/kotlin/com/thomaskioko/tvmaniac/core/db/BaseDatabaseTest.kt @@ -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) + } \ No newline at end of file diff --git a/core/datastore/implementation/src/iosMain/kotlin/com/thomaskioko/tvmaniac/datastore/implementation/DataStorePlatformComponent.kt b/core/datastore/implementation/src/iosMain/kotlin/com/thomaskioko/tvmaniac/datastore/implementation/DataStorePlatformComponent.kt index dfee4b2bf..b08b6606b 100644 --- a/core/datastore/implementation/src/iosMain/kotlin/com/thomaskioko/tvmaniac/datastore/implementation/DataStorePlatformComponent.kt +++ b/core/datastore/implementation/src/iosMain/kotlin/com/thomaskioko/tvmaniac/datastore/implementation/DataStorePlatformComponent.kt @@ -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 @@ -13,6 +14,7 @@ import platform.Foundation.NSUserDomainMask actual interface DataStorePlatformComponent { + @OptIn(ExperimentalForeignApi::class) @ApplicationScope @Provides fun provideDataStore( diff --git a/core/datastore/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/datastore/implementation/DataStorePlatformComponent.kt b/core/datastore/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/datastore/implementation/DataStorePlatformComponent.kt new file mode 100644 index 000000000..d50aace6c --- /dev/null +++ b/core/datastore/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/datastore/implementation/DataStorePlatformComponent.kt @@ -0,0 +1,3 @@ +package com.thomaskioko.tvmaniac.datastore.implementation + +actual interface DataStorePlatformComponent diff --git a/core/datastore/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/datastore/implementation/IgnoreIos.kt b/core/datastore/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/datastore/implementation/IgnoreIos.kt new file mode 100644 index 000000000..0ff11a0c2 --- /dev/null +++ b/core/datastore/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/datastore/implementation/IgnoreIos.kt @@ -0,0 +1,4 @@ +package com.thomaskioko.tvmaniac.datastore.implementation + +@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) +actual annotation class IgnoreIos() diff --git a/core/networkutil/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/core/networkutil/inject/NetworkPlatformComponent.kt b/core/networkutil/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/core/networkutil/inject/NetworkPlatformComponent.kt new file mode 100644 index 000000000..3e3793741 --- /dev/null +++ b/core/networkutil/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/core/networkutil/inject/NetworkPlatformComponent.kt @@ -0,0 +1,3 @@ +package com.thomaskioko.tvmaniac.core.networkutil.inject + +actual interface NetworkPlatformComponent \ No newline at end of file diff --git a/core/tmdb-api/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/tmdb/implementation/TmdbPlatformComponent.kt b/core/tmdb-api/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/tmdb/implementation/TmdbPlatformComponent.kt new file mode 100644 index 000000000..d5870c4fe --- /dev/null +++ b/core/tmdb-api/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/tmdb/implementation/TmdbPlatformComponent.kt @@ -0,0 +1,3 @@ +package com.thomaskioko.tvmaniac.tmdb.implementation + +actual interface TmdbPlatformComponent \ No newline at end of file diff --git a/core/util/src/iosMain/kotlin/com/thomaskioko/tvmaniac/util/BundleResourceReader.kt b/core/util/src/iosMain/kotlin/com/thomaskioko/tvmaniac/util/BundleResourceReader.kt index a96b36ce7..1ce149368 100644 --- a/core/util/src/iosMain/kotlin/com/thomaskioko/tvmaniac/util/BundleResourceReader.kt +++ b/core/util/src/iosMain/kotlin/com/thomaskioko/tvmaniac/util/BundleResourceReader.kt @@ -1,5 +1,6 @@ package com.thomaskioko.tvmaniac.util +import kotlinx.cinterop.ExperimentalForeignApi import kotlinx.cinterop.ObjCObjectVar import kotlinx.cinterop.alloc import kotlinx.cinterop.memScoped @@ -19,6 +20,7 @@ class BundleResourceReader( private val bundle: NSBundle = NSBundle.bundleForClass(BundleMarker), ) : ResourceReader { + @OptIn(ExperimentalForeignApi::class) override fun readResource(name: String): String { // TODO: Catch iOS-only exceptions and map them to common ones. val (filename, type) = when (val lastPeriodIndex = name.lastIndexOf('.')) { diff --git a/core/util/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/util/inject/UtilPlatformComponent.kt b/core/util/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/util/inject/UtilPlatformComponent.kt new file mode 100644 index 000000000..e9a7a8f39 --- /dev/null +++ b/core/util/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/util/inject/UtilPlatformComponent.kt @@ -0,0 +1,3 @@ +package com.thomaskioko.tvmaniac.util.inject + +actual interface UtilPlatformComponent \ No newline at end of file From 1336801c08f8a9c450bf75b743aa930d1f5d65d1 Mon Sep 17 00:00:00 2001 From: Thomas Kioko Date: Thu, 2 Nov 2023 20:05:55 +0100 Subject: [PATCH 3/6] Migrate to hierarchicalStructureSupport --- core/database/build.gradle.kts | 53 +++++++++++-------- core/datastore/api/build.gradle.kts | 31 +++++------ .../datastore/implementation/build.gradle.kts | 30 ++++++----- core/datastore/testing/build.gradle.kts | 19 +++---- core/networkutil/build.gradle.kts | 17 +++--- core/tmdb-api/api/build.gradle.kts | 20 +++---- core/tmdb-api/implementation/build.gradle.kts | 49 +++++++++-------- core/trakt-api/api/build.gradle.kts | 19 +++---- .../trakt-api/implementation/build.gradle.kts | 48 +++++++++-------- core/trakt-auth/api/build.gradle.kts | 23 ++++---- .../implementation/build.gradle.kts | 38 ++++++------- core/trakt-auth/testing/build.gradle.kts | 16 ++---- core/util/build.gradle.kts | 34 ++++++------ data/category/api/build.gradle.kts | 21 +++----- data/category/implementation/build.gradle.kts | 23 ++++---- data/episodeimages/api/build.gradle.kts | 21 +++----- .../implementation/build.gradle.kts | 34 ++++++------ data/episodeimages/testing/build.gradle.kts | 23 ++++---- data/episodes/api/build.gradle.kts | 21 +++----- data/episodes/implementation/build.gradle.kts | 39 ++++++-------- data/episodes/testing/build.gradle.kts | 23 ++++---- data/profile/api/build.gradle.kts | 25 ++++----- data/profile/implementation/build.gradle.kts | 25 ++++----- data/profile/testing/build.gradle.kts | 20 +++---- data/profilestats/api/build.gradle.kts | 25 ++++----- .../implementation/build.gradle.kts | 27 ++++------ data/profilestats/testing/build.gradle.kts | 20 +++---- data/request-manager/api/build.gradle.kts | 18 +------ .../implementation/build.gradle.kts | 17 +----- data/seasondetails/api/build.gradle.kts | 25 ++++----- .../implementation/build.gradle.kts | 48 ++++++++--------- data/seasondetails/testing/build.gradle.kts | 21 +++----- data/seasons/api/build.gradle.kts | 25 ++++----- data/seasons/implementation/build.gradle.kts | 51 +++++++++--------- data/seasons/testing/build.gradle.kts | 21 +++----- data/showimages/api/build.gradle.kts | 21 +++----- .../implementation/build.gradle.kts | 29 ++++------ data/showimages/testing/build.gradle.kts | 23 +++----- data/shows/api/build.gradle.kts | 27 ++++------ data/shows/implementation/build.gradle.kts | 34 +++++------- data/shows/testing/build.gradle.kts | 21 +++----- data/similar/api/build.gradle.kts | 25 ++++----- data/similar/implementation/build.gradle.kts | 45 +++++++--------- data/similar/testing/build.gradle.kts | 24 +++------ data/trailers/api/build.gradle.kts | 24 ++++----- data/trailers/implementation/build.gradle.kts | 31 +++++------ data/trailers/testing/build.gradle.kts | 21 +++----- data/watchlist/api/build.gradle.kts | 19 +++---- .../watchlist/implementation/build.gradle.kts | 38 ++++++------- data/watchlist/testing/build.gradle.kts | 21 +++----- gradle.properties | 1 - presentation/discover/build.gradle.kts | 40 ++++++++------ presentation/profile/build.gradle.kts | 40 +++++++------- presentation/seasondetails/build.gradle.kts | 35 +++++++----- presentation/settings/build.gradle.kts | 39 ++++++++------ presentation/show-details/build.gradle.kts | 47 +++++++++------- presentation/trailers/build.gradle.kts | 33 +++++++----- presentation/watchlist/build.gradle.kts | 31 ++++++----- shared/build.gradle.kts | 14 ++--- 59 files changed, 730 insertions(+), 923 deletions(-) diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts index 0bc15158e..3fea17788 100644 --- a/core/database/build.gradle.kts +++ b/core/database/build.gradle.kts @@ -1,41 +1,52 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.android.library") + 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) + } } } } diff --git a/core/datastore/api/build.gradle.kts b/core/datastore/api/build.gradle.kts index f3b5471f7..e15e5ff53 100644 --- a/core/datastore/api/build.gradle.kts +++ b/core/datastore/api/build.gradle.kts @@ -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" -} +} \ No newline at end of file diff --git a/core/datastore/implementation/build.gradle.kts b/core/datastore/implementation/build.gradle.kts index a8e2754f0..2d1aa6508 100644 --- a/core/datastore/implementation/build.gradle.kts +++ b/core/datastore/implementation/build.gradle.kts @@ -1,29 +1,31 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.android.library") + 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) + } } } } diff --git a/core/datastore/testing/build.gradle.kts b/core/datastore/testing/build.gradle.kts index d83d73d9f..c9de4113b 100644 --- a/core/datastore/testing/build.gradle.kts +++ b/core/datastore/testing/build.gradle.kts @@ -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" -} +} \ No newline at end of file diff --git a/core/networkutil/build.gradle.kts b/core/networkutil/build.gradle.kts index 24eafa1f7..e0d672d55 100644 --- a/core/networkutil/build.gradle.kts +++ b/core/networkutil/build.gradle.kts @@ -1,19 +1,18 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.android.library") + 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) + } } } } diff --git a/core/tmdb-api/api/build.gradle.kts b/core/tmdb-api/api/build.gradle.kts index 4c9508b56..9d4ac4c41 100644 --- a/core/tmdb-api/api/build.gradle.kts +++ b/core/tmdb-api/api/build.gradle.kts @@ -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" -} diff --git a/core/tmdb-api/implementation/build.gradle.kts b/core/tmdb-api/implementation/build.gradle.kts index f0de00023..5b2cdaf7b 100644 --- a/core/tmdb-api/implementation/build.gradle.kts +++ b/core/tmdb-api/implementation/build.gradle.kts @@ -1,38 +1,43 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) alias(libs.plugins.serialization) } kotlin { - android() - ios() - sourceSets { - - sourceSets["androidMain"].dependencies { - implementation(libs.ktor.okhttp) + androidMain { + dependencies { + implementation(libs.ktor.okhttp) + } } - sourceSets["commonMain"].dependencies { - implementation(projects.core.util) - implementation(projects.core.tmdbApi.api) - - implementation(libs.kotlinInject.runtime) - implementation(libs.ktor.core) - implementation(libs.ktor.negotiation) - implementation(libs.ktor.serialization.json) - implementation(libs.sqldelight.extensions) - implementation(libs.sqldelight.extensions) + commonMain { + dependencies { + implementation(projects.core.util) + implementation(projects.core.tmdbApi.api) + + implementation(libs.kotlinInject.runtime) + implementation(libs.ktor.core) + implementation(libs.ktor.negotiation) + implementation(libs.ktor.serialization.json) + implementation(libs.sqldelight.extensions) + implementation(libs.sqldelight.extensions) + } } - sourceSets["commonTest"].dependencies { - implementation(libs.ktor.serialization) + commonTest { + dependencies { + implementation(libs.ktor.serialization) + } } - sourceSets["iosMain"].dependencies { - implementation(libs.ktor.darwin) - implementation(libs.ktor.negotiation) + iosMain { + dependencies { + implementation(libs.ktor.darwin) + implementation(libs.ktor.negotiation) + } } } } diff --git a/core/trakt-api/api/build.gradle.kts b/core/trakt-api/api/build.gradle.kts index ebb6d4b33..60fcd9da5 100644 --- a/core/trakt-api/api/build.gradle.kts +++ b/core/trakt-api/api/build.gradle.kts @@ -1,20 +1,15 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.serialization) } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - api(projects.core.networkutil) - implementation(libs.ktor.serialization) + commonMain { + dependencies { + api(projects.core.networkutil) + implementation(libs.ktor.serialization) + } } } -} - -android { - namespace = "com.thomaskioko.tvmaniac.trakt.api.api" -} +} \ No newline at end of file diff --git a/core/trakt-api/implementation/build.gradle.kts b/core/trakt-api/implementation/build.gradle.kts index 0feb23bd0..ea7afe2cc 100644 --- a/core/trakt-api/implementation/build.gradle.kts +++ b/core/trakt-api/implementation/build.gradle.kts @@ -1,39 +1,41 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.serialization) alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - sourceSets["androidMain"].dependencies { - implementation(libs.appauth) - implementation(libs.ktor.okhttp) + androidMain { + dependencies { + implementation(libs.appauth) + implementation(libs.ktor.okhttp) + } } - - sourceSets["commonMain"].dependencies { - implementation(projects.core.util) - implementation(projects.core.traktApi.api) - implementation(projects.core.datastore.api) - - implementation(libs.ktor.core) - implementation(libs.ktor.logging) - implementation(libs.ktor.negotiation) - implementation(libs.ktor.serialization.json) - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) + commonMain { + dependencies { + implementation(projects.core.util) + implementation(projects.core.traktApi.api) + implementation(projects.core.datastore.api) + + implementation(libs.ktor.core) + implementation(libs.ktor.logging) + implementation(libs.ktor.negotiation) + implementation(libs.ktor.serialization.json) + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + } } - sourceSets["iosMain"].dependencies { - implementation(projects.core.traktApi.api) + iosMain { + dependencies { + implementation(projects.core.traktApi.api) - implementation(libs.ktor.darwin) + implementation(libs.ktor.darwin) + } } - } } diff --git a/core/trakt-auth/api/build.gradle.kts b/core/trakt-auth/api/build.gradle.kts index a61dcd3b0..d9e755327 100644 --- a/core/trakt-auth/api/build.gradle.kts +++ b/core/trakt-auth/api/build.gradle.kts @@ -1,21 +1,22 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - - sourceSets["androidMain"].dependencies { - api(libs.appauth) - api(libs.coroutines.core) + androidMain { + dependencies { + api(libs.appauth) + api(libs.coroutines.core) + } } - sourceSets["commonMain"].dependencies { - api(projects.core.datastore.api) - api(libs.coroutines.core) + commonMain { + dependencies { + api(projects.core.datastore.api) + api(libs.coroutines.core) + } } } } diff --git a/core/trakt-auth/implementation/build.gradle.kts b/core/trakt-auth/implementation/build.gradle.kts index 770199158..bfeae569a 100644 --- a/core/trakt-auth/implementation/build.gradle.kts +++ b/core/trakt-auth/implementation/build.gradle.kts @@ -1,32 +1,32 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } - kotlin { - android() - ios() - sourceSets { - sourceSets["androidMain"].dependencies { - implementation(projects.androidCore.workmanager) - implementation(projects.core.traktAuth.api) - implementation(projects.core.util) - - implementation(projects.core.util) - implementation(libs.androidx.activity) - implementation(libs.androidx.browser) - implementation(libs.androidx.core) + androidMain { + dependencies { + implementation(projects.androidCore.workmanager) + implementation(projects.core.traktAuth.api) + implementation(projects.core.util) + + implementation(projects.core.util) + implementation(libs.androidx.activity) + implementation(libs.androidx.browser) + implementation(libs.androidx.core) + } } - sourceSets["commonMain"].dependencies { - implementation(projects.core.traktAuth.api) - implementation(projects.core.util) - implementation(libs.kotlinInject.runtime) + commonMain { + dependencies { + implementation(projects.core.traktAuth.api) + implementation(projects.core.util) + implementation(libs.kotlinInject.runtime) + } } - } } diff --git a/core/trakt-auth/testing/build.gradle.kts b/core/trakt-auth/testing/build.gradle.kts index efb15ec05..e16220a44 100644 --- a/core/trakt-auth/testing/build.gradle.kts +++ b/core/trakt-auth/testing/build.gradle.kts @@ -1,19 +1,13 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } - kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.traktAuth.api) + commonMain { + dependencies { + implementation(projects.core.traktAuth.api) + } } } -} - -android { - namespace = "com.thomaskioko.tvmaniac.traktauth.testing" } \ No newline at end of file diff --git a/core/util/build.gradle.kts b/core/util/build.gradle.kts index e12c1fbba..b7fdfb4c1 100644 --- a/core/util/build.gradle.kts +++ b/core/util/build.gradle.kts @@ -1,32 +1,36 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.serialization) alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - sourceSets["androidMain"].dependencies { - implementation(libs.kotlinx.datetime) + androidMain { + dependencies { + implementation(libs.kotlinx.datetime) + } } - sourceSets["commonMain"].dependencies { - api(libs.ktor.serialization) + commonMain { + dependencies { + api(libs.ktor.serialization) - implementation(libs.coroutines.core) - implementation(libs.kermit) - implementation(libs.kotlinInject.runtime) - implementation(libs.ktor.core) - implementation(libs.yamlkt) + implementation(libs.coroutines.core) + implementation(libs.kermit) + implementation(libs.kotlinInject.runtime) + implementation(libs.ktor.core) + implementation(libs.yamlkt) + } } - sourceSets["iosMain"].dependencies { - implementation(libs.kotlinx.datetime) + iosMain { + dependencies { + implementation(libs.kotlinx.datetime) + } } } diff --git a/data/category/api/build.gradle.kts b/data/category/api/build.gradle.kts index db990ca7b..2425bebf1 100644 --- a/data/category/api/build.gradle.kts +++ b/data/category/api/build.gradle.kts @@ -1,25 +1,20 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - api(projects.core.database) - api(projects.core.networkutil) - implementation(projects.core.tmdbApi.api) + commonMain { + dependencies { + api(projects.core.database) + api(projects.core.networkutil) + implementation(projects.core.tmdbApi.api) - api(libs.coroutines.core) + api(libs.coroutines.core) + } } } } - -android { - namespace = "com.thomaskioko.tvmaniac.data.category.api" -} diff --git a/data/category/implementation/build.gradle.kts b/data/category/implementation/build.gradle.kts index 246abcf45..59ac6cf1b 100644 --- a/data/category/implementation/build.gradle.kts +++ b/data/category/implementation/build.gradle.kts @@ -1,20 +1,19 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.util) - implementation(projects.data.category.api) + commonMain { + dependencies { + implementation(projects.core.util) + implementation(projects.data.category.api) - implementation(libs.coroutines.core) - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) + implementation(libs.coroutines.core) + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + } } } } @@ -22,8 +21,4 @@ kotlin { dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) -} - -android { - namespace = "com.thomaskioko.tvmaniac.data.category.implementation" } \ No newline at end of file diff --git a/data/episodeimages/api/build.gradle.kts b/data/episodeimages/api/build.gradle.kts index 369fe8cbb..5dd2099de 100644 --- a/data/episodeimages/api/build.gradle.kts +++ b/data/episodeimages/api/build.gradle.kts @@ -1,22 +1,17 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - api(projects.core.util) - api(projects.core.networkutil) - api(projects.core.database) + commonMain { + dependencies { + api(projects.core.util) + api(projects.core.networkutil) + api(projects.core.database) - api(libs.coroutines.core) + api(libs.coroutines.core) + } } } -} - -android { - namespace = "com.thomaskioko.tvmaniac.episodeimages.api" } \ No newline at end of file diff --git a/data/episodeimages/implementation/build.gradle.kts b/data/episodeimages/implementation/build.gradle.kts index 3e32e7356..ddb8a4baf 100644 --- a/data/episodeimages/implementation/build.gradle.kts +++ b/data/episodeimages/implementation/build.gradle.kts @@ -1,36 +1,32 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.tmdbApi.api) - implementation(projects.data.episodeimages.api) + commonMain { + dependencies { + implementation(projects.core.tmdbApi.api) + implementation(projects.data.episodeimages.api) - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + } } - sourceSets["commonTest"].dependencies { - implementation(kotlin("test")) - implementation(libs.turbine) - implementation(libs.kotest.assertions) + commonTest { + dependencies { + implementation(kotlin("test")) + implementation(libs.turbine) + implementation(libs.kotest.assertions) + } } - } } dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) -} - -android { - namespace = "com.thomaskioko.tvmaniac.episodeimages.implementation" -} +} \ No newline at end of file diff --git a/data/episodeimages/testing/build.gradle.kts b/data/episodeimages/testing/build.gradle.kts index 531173c75..39d457703 100644 --- a/data/episodeimages/testing/build.gradle.kts +++ b/data/episodeimages/testing/build.gradle.kts @@ -1,22 +1,17 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.database) - implementation(projects.core.util) - implementation(projects.data.episodeimages.api) + commonMain { + dependencies { + implementation(projects.core.database) + implementation(projects.core.util) + implementation(projects.data.episodeimages.api) - implementation(libs.coroutines.core) + implementation(libs.coroutines.core) + } } } -} - -android { - namespace = "com.thomaskioko.tvmaniac.episodeimages.testing" -} +} \ No newline at end of file diff --git a/data/episodes/api/build.gradle.kts b/data/episodes/api/build.gradle.kts index d1c3e1c36..5dd2099de 100644 --- a/data/episodes/api/build.gradle.kts +++ b/data/episodes/api/build.gradle.kts @@ -1,22 +1,17 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - api(projects.core.util) - api(projects.core.networkutil) - api(projects.core.database) + commonMain { + dependencies { + api(projects.core.util) + api(projects.core.networkutil) + api(projects.core.database) - api(libs.coroutines.core) + api(libs.coroutines.core) + } } } -} - -android { - namespace = "com.thomaskioko.tvmaniac.episodes.api" } \ No newline at end of file diff --git a/data/episodes/implementation/build.gradle.kts b/data/episodes/implementation/build.gradle.kts index 259a8bd08..4d4cf4aca 100644 --- a/data/episodes/implementation/build.gradle.kts +++ b/data/episodes/implementation/build.gradle.kts @@ -1,37 +1,32 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - - sourceSets["commonMain"].dependencies { - implementation(projects.core.tmdbApi.api) - implementation(projects.data.episodes.api) - implementation(projects.data.shows.api) - - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) + commonMain { + dependencies { + implementation(projects.core.tmdbApi.api) + implementation(projects.data.episodes.api) + implementation(projects.data.shows.api) + + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + } } - sourceSets["commonTest"].dependencies { - implementation(kotlin("test")) - implementation(libs.turbine) - implementation(libs.kotest.assertions) + commonTest { + dependencies { + implementation(kotlin("test")) + implementation(libs.turbine) + implementation(libs.kotest.assertions) + } } - } } dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) -} - -android { - namespace = "com.thomaskioko.tvmaniac.episodes.implementation" -} +} \ No newline at end of file diff --git a/data/episodes/testing/build.gradle.kts b/data/episodes/testing/build.gradle.kts index 6c5b94203..00e6b4624 100644 --- a/data/episodes/testing/build.gradle.kts +++ b/data/episodes/testing/build.gradle.kts @@ -1,22 +1,17 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.database) - implementation(projects.core.util) - implementation(projects.data.episodes.api) + commonMain { + dependencies { + implementation(projects.core.database) + implementation(projects.core.util) + implementation(projects.data.episodes.api) - implementation(libs.coroutines.core) + implementation(libs.coroutines.core) + } } } -} - -android { - namespace = "com.thomaskioko.tvmaniac.episodes.testing" -} +} \ No newline at end of file diff --git a/data/profile/api/build.gradle.kts b/data/profile/api/build.gradle.kts index 928025fde..978bdc459 100644 --- a/data/profile/api/build.gradle.kts +++ b/data/profile/api/build.gradle.kts @@ -1,24 +1,19 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - api(projects.core.database) - api(projects.core.networkutil) - api(projects.core.util) + commonMain { + dependencies { + api(projects.core.database) + api(projects.core.networkutil) + api(projects.core.util) - api(libs.coroutines.core) - api(libs.kotlinx.atomicfu) - api(libs.store5) + api(libs.coroutines.core) + api(libs.kotlinx.atomicfu) + api(libs.store5) + } } } -} - -android { - namespace = "com.thomaskioko.tvmaniac.profile.api" } \ No newline at end of file diff --git a/data/profile/implementation/build.gradle.kts b/data/profile/implementation/build.gradle.kts index f885d2a55..bb0cf83f7 100644 --- a/data/profile/implementation/build.gradle.kts +++ b/data/profile/implementation/build.gradle.kts @@ -1,21 +1,20 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.data.profile.api) - implementation(projects.data.requestManager.api) - implementation(projects.data.shows.api) - implementation(projects.core.traktApi.api) + commonMain { + dependencies { + implementation(projects.data.profile.api) + implementation(projects.data.requestManager.api) + implementation(projects.data.shows.api) + implementation(projects.core.traktApi.api) - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + } } } } @@ -23,8 +22,4 @@ kotlin { dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) -} - -android { - namespace = "com.thomaskioko.tvmaniac.trakt.profile.implementation" } \ No newline at end of file diff --git a/data/profile/testing/build.gradle.kts b/data/profile/testing/build.gradle.kts index 1d7c89dd0..d3c81ab02 100644 --- a/data/profile/testing/build.gradle.kts +++ b/data/profile/testing/build.gradle.kts @@ -1,21 +1,15 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - api(projects.core.database) - implementation(projects.data.profile.api) - implementation(libs.coroutines.core) + commonMain { + dependencies { + api(projects.core.database) + implementation(projects.data.profile.api) + implementation(libs.coroutines.core) + } } } -} - - -android { - namespace = "com.thomaskioko.tvmaniac.trakt.profile.testing" } \ No newline at end of file diff --git a/data/profilestats/api/build.gradle.kts b/data/profilestats/api/build.gradle.kts index 928025fde..978bdc459 100644 --- a/data/profilestats/api/build.gradle.kts +++ b/data/profilestats/api/build.gradle.kts @@ -1,24 +1,19 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - api(projects.core.database) - api(projects.core.networkutil) - api(projects.core.util) + commonMain { + dependencies { + api(projects.core.database) + api(projects.core.networkutil) + api(projects.core.util) - api(libs.coroutines.core) - api(libs.kotlinx.atomicfu) - api(libs.store5) + api(libs.coroutines.core) + api(libs.kotlinx.atomicfu) + api(libs.store5) + } } } -} - -android { - namespace = "com.thomaskioko.tvmaniac.profile.api" } \ No newline at end of file diff --git a/data/profilestats/implementation/build.gradle.kts b/data/profilestats/implementation/build.gradle.kts index fdf473380..1f6a9d195 100644 --- a/data/profilestats/implementation/build.gradle.kts +++ b/data/profilestats/implementation/build.gradle.kts @@ -1,21 +1,20 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.data.profilestats.api) - implementation(projects.data.requestManager.api) - implementation(projects.data.shows.api) - implementation(projects.core.traktApi.api) + commonMain { + dependencies { + implementation(projects.data.profilestats.api) + implementation(projects.data.requestManager.api) + implementation(projects.data.shows.api) + implementation(projects.core.traktApi.api) - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + } } } } @@ -23,8 +22,4 @@ kotlin { dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) -} - -android { - namespace = "com.thomaskioko.tvmaniac.trakt.profile.implementation" -} +} \ No newline at end of file diff --git a/data/profilestats/testing/build.gradle.kts b/data/profilestats/testing/build.gradle.kts index 58301a7ba..400167409 100644 --- a/data/profilestats/testing/build.gradle.kts +++ b/data/profilestats/testing/build.gradle.kts @@ -1,21 +1,15 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - api(projects.core.database) - implementation(projects.data.profilestats.api) - implementation(libs.coroutines.core) + commonMain { + dependencies { + api(projects.core.database) + implementation(projects.data.profilestats.api) + implementation(libs.coroutines.core) + } } } -} - - -android { - namespace = "com.thomaskioko.tvmaniac.trakt.profile.testing" } \ No newline at end of file diff --git a/data/request-manager/api/build.gradle.kts b/data/request-manager/api/build.gradle.kts index 2cb4b8f58..30e249923 100644 --- a/data/request-manager/api/build.gradle.kts +++ b/data/request-manager/api/build.gradle.kts @@ -1,19 +1,10 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - targetHierarchy.default() - - android() - listOf( - iosX64(), - iosArm64(), - ) - sourceSets { - val commonMain by getting { + commonMain { dependencies { api(projects.core.database) api(projects.core.util) @@ -21,9 +12,4 @@ kotlin { } } } -} - - -android { - namespace = "com.thomaskioko.tvmaniac.resourcemanager.api" } \ No newline at end of file diff --git a/data/request-manager/implementation/build.gradle.kts b/data/request-manager/implementation/build.gradle.kts index 3f0d233b6..fd7a94f2f 100644 --- a/data/request-manager/implementation/build.gradle.kts +++ b/data/request-manager/implementation/build.gradle.kts @@ -1,21 +1,12 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - targetHierarchy.default() - - android() - listOf( - iosX64(), - iosArm64(), - ) - sourceSets { - val commonMain by getting { + commonMain { dependencies { implementation(projects.data.requestManager.api) @@ -30,8 +21,4 @@ kotlin { dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) -} - -android { - namespace = "com.thomaskioko.tvmaniac.resourcemanager.implementation" } \ No newline at end of file diff --git a/data/seasondetails/api/build.gradle.kts b/data/seasondetails/api/build.gradle.kts index cd72f27c4..3702698fc 100644 --- a/data/seasondetails/api/build.gradle.kts +++ b/data/seasondetails/api/build.gradle.kts @@ -1,25 +1,18 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { + commonMain { + dependencies { + api(projects.core.database) + api(projects.core.networkutil) - sourceSets["commonMain"].dependencies { - api(projects.core.database) - api(projects.core.networkutil) - - api(libs.coroutines.core) - api(libs.kotlinx.atomicfu) - api(libs.store5) + api(libs.coroutines.core) + api(libs.kotlinx.atomicfu) + api(libs.store5) + } } - } -} - -android { - namespace = "com.thomaskioko.tvmaniac.seasonsdetail.api" } \ No newline at end of file diff --git a/data/seasondetails/implementation/build.gradle.kts b/data/seasondetails/implementation/build.gradle.kts index 7ff40cb27..742fe3df8 100644 --- a/data/seasondetails/implementation/build.gradle.kts +++ b/data/seasondetails/implementation/build.gradle.kts @@ -1,43 +1,39 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.database) - implementation(projects.core.datastore.api) - implementation(projects.core.tmdbApi.api) - implementation(projects.core.traktApi.api) - implementation(projects.core.util) - implementation(projects.data.episodes.api) - implementation(projects.data.seasons.api) - implementation(projects.data.seasondetails.api) - - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) - + commonMain { + dependencies { + implementation(projects.core.database) + implementation(projects.core.datastore.api) + implementation(projects.core.tmdbApi.api) + implementation(projects.core.traktApi.api) + implementation(projects.core.util) + implementation(projects.data.episodes.api) + implementation(projects.data.seasons.api) + implementation(projects.data.seasondetails.api) + + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + + } } - sourceSets["commonTest"].dependencies { - implementation(kotlin("test")) - implementation(libs.turbine) - implementation(libs.kotest.assertions) + commonMain { + dependencies { + implementation(kotlin("test")) + implementation(libs.turbine) + implementation(libs.kotest.assertions) + } } } } dependencies { - add("kspAndroid", libs.kotlinInject.compiler) add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) -} - -android { - namespace = "com.thomaskioko.tvmaniac.seasonsdetail.implementation" } \ No newline at end of file diff --git a/data/seasondetails/testing/build.gradle.kts b/data/seasondetails/testing/build.gradle.kts index e43bc4225..cc8c9cff5 100644 --- a/data/seasondetails/testing/build.gradle.kts +++ b/data/seasondetails/testing/build.gradle.kts @@ -1,23 +1,18 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.database) - implementation(projects.core.util) - implementation(projects.data.seasondetails.api) + commonMain { + dependencies { + implementation(projects.core.database) + implementation(projects.core.util) + implementation(projects.data.seasondetails.api) - implementation(libs.coroutines.core) + implementation(libs.coroutines.core) + } } } } - -android { - namespace = "com.thomaskioko.tvmaniac.seasondetails.testing" -} diff --git a/data/seasons/api/build.gradle.kts b/data/seasons/api/build.gradle.kts index deed27d02..3702698fc 100644 --- a/data/seasons/api/build.gradle.kts +++ b/data/seasons/api/build.gradle.kts @@ -1,25 +1,18 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { + commonMain { + dependencies { + api(projects.core.database) + api(projects.core.networkutil) - sourceSets["commonMain"].dependencies { - api(projects.core.database) - api(projects.core.networkutil) - - api(libs.coroutines.core) - api(libs.kotlinx.atomicfu) - api(libs.store5) + api(libs.coroutines.core) + api(libs.kotlinx.atomicfu) + api(libs.store5) + } } - } -} - -android { - namespace = "com.thomaskioko.tvmaniac.seasons.api" } \ No newline at end of file diff --git a/data/seasons/implementation/build.gradle.kts b/data/seasons/implementation/build.gradle.kts index 20cb171dd..54722660a 100644 --- a/data/seasons/implementation/build.gradle.kts +++ b/data/seasons/implementation/build.gradle.kts @@ -1,43 +1,40 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } kotlin { - android() - ios() sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.database) - implementation(projects.core.datastore.api) - implementation(projects.core.tmdbApi.api) - implementation(projects.core.traktApi.api) - implementation(projects.core.util) - implementation(projects.data.episodes.api) - implementation(projects.data.requestManager.api) - implementation(projects.data.seasons.api) - - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) - - } - - sourceSets["commonTest"].dependencies { - implementation(kotlin("test")) - implementation(libs.turbine) - implementation(libs.kotest.assertions) + commonMain { + dependencies { + implementation(projects.core.database) + implementation(projects.core.datastore.api) + implementation(projects.core.tmdbApi.api) + implementation(projects.core.traktApi.api) + implementation(projects.core.util) + implementation(projects.data.episodes.api) + implementation(projects.data.requestManager.api) + implementation(projects.data.seasons.api) + + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + + } + } + + commonMain { + dependencies { + implementation(kotlin("test")) + implementation(libs.turbine) + implementation(libs.kotest.assertions) + } } } } dependencies { - add("kspAndroid", libs.kotlinInject.compiler) add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) } - -android { - namespace = "com.thomaskioko.tvmaniac.seasons.implementation" -} \ No newline at end of file diff --git a/data/seasons/testing/build.gradle.kts b/data/seasons/testing/build.gradle.kts index 0dd4facb0..3b43f2298 100644 --- a/data/seasons/testing/build.gradle.kts +++ b/data/seasons/testing/build.gradle.kts @@ -1,23 +1,18 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.database) - implementation(projects.core.util) - implementation(projects.data.seasons.api) + commonMain { + dependencies { + implementation(projects.core.database) + implementation(projects.core.util) + implementation(projects.data.seasons.api) - implementation(libs.coroutines.core) + implementation(libs.coroutines.core) + } } } } - -android { - namespace = "com.thomaskioko.tvmaniac.seasons.testing" -} diff --git a/data/showimages/api/build.gradle.kts b/data/showimages/api/build.gradle.kts index 90cb4b9a8..59e60b379 100644 --- a/data/showimages/api/build.gradle.kts +++ b/data/showimages/api/build.gradle.kts @@ -1,21 +1,16 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } 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) - api(libs.coroutines.core) + api(libs.coroutines.core) + } } } -} - -android { - namespace = "com.thomaskioko.tvmaniac.showimages.api" -} +} \ No newline at end of file diff --git a/data/showimages/implementation/build.gradle.kts b/data/showimages/implementation/build.gradle.kts index efd5dd898..11b76c2e6 100644 --- a/data/showimages/implementation/build.gradle.kts +++ b/data/showimages/implementation/build.gradle.kts @@ -1,35 +1,26 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - sourceSets["androidMain"].dependencies { - implementation(libs.ktor.okhttp) - } - - sourceSets["commonMain"].dependencies { - implementation(projects.core.util) - implementation(projects.data.requestManager.api) - implementation(projects.data.showimages.api) - implementation(projects.core.tmdbApi.api) + commonMain { + dependencies { + implementation(projects.core.util) + implementation(projects.data.requestManager.api) + implementation(projects.data.showimages.api) + implementation(projects.core.tmdbApi.api) - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + } } } } -android { - namespace = "com.thomaskioko.tvmaniac.showimages.implementation" -} - dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) diff --git a/data/showimages/testing/build.gradle.kts b/data/showimages/testing/build.gradle.kts index f37af0b68..13fbd2e76 100644 --- a/data/showimages/testing/build.gradle.kts +++ b/data/showimages/testing/build.gradle.kts @@ -1,24 +1,17 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } - - kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.database) - implementation(projects.core.util) - implementation(projects.data.showimages.api) + commonMain { + dependencies { + implementation(projects.core.database) + implementation(projects.core.util) + implementation(projects.data.showimages.api) - implementation(libs.coroutines.core) + implementation(libs.coroutines.core) + } } } -} - -android { - namespace = "com.thomaskioko.tvmaniac.showimages.testing" } \ No newline at end of file diff --git a/data/shows/api/build.gradle.kts b/data/shows/api/build.gradle.kts index 096d16d98..1437f8489 100644 --- a/data/shows/api/build.gradle.kts +++ b/data/shows/api/build.gradle.kts @@ -1,24 +1,19 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - api(projects.core.database) - api(projects.core.networkutil) - api(projects.data.category.api) + commonMain { + dependencies { + api(projects.core.database) + api(projects.core.networkutil) + api(projects.data.category.api) - api(libs.coroutines.core) - api(libs.kotlinx.atomicfu) - api(libs.store5) + api(libs.coroutines.core) + api(libs.kotlinx.atomicfu) + api(libs.store5) + } } } -} - -android { - namespace = "com.thomaskioko.tvmaniac.shows.api" -} +} \ No newline at end of file diff --git a/data/shows/implementation/build.gradle.kts b/data/shows/implementation/build.gradle.kts index 5c7e453c6..fb0c55523 100644 --- a/data/shows/implementation/build.gradle.kts +++ b/data/shows/implementation/build.gradle.kts @@ -1,25 +1,23 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - - sourceSets["commonMain"].dependencies { - implementation(projects.core.database) - implementation(projects.core.traktApi.api) - implementation(projects.core.util) - implementation(projects.data.shows.api) - implementation(projects.data.requestManager.api) - - api(libs.coroutines.core) - - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) + commonMain { + dependencies { + implementation(projects.core.database) + implementation(projects.core.traktApi.api) + implementation(projects.core.util) + implementation(projects.data.shows.api) + implementation(projects.data.requestManager.api) + + api(libs.coroutines.core) + + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + } } } @@ -28,8 +26,4 @@ kotlin { dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) -} - -android { - namespace = "com.thomaskioko.tvmaniac.shows.implementation" } \ No newline at end of file diff --git a/data/shows/testing/build.gradle.kts b/data/shows/testing/build.gradle.kts index 21afbb1fb..46ec7273f 100644 --- a/data/shows/testing/build.gradle.kts +++ b/data/shows/testing/build.gradle.kts @@ -1,21 +1,16 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.database) - implementation(projects.core.util) - implementation(projects.data.shows.api) - implementation(libs.coroutines.core) + commonMain { + dependencies { + implementation(projects.core.database) + implementation(projects.core.util) + implementation(projects.data.shows.api) + implementation(libs.coroutines.core) + } } } } - -android { - namespace = "com.thomaskioko.tvmaniac.shows.testing" -} diff --git a/data/similar/api/build.gradle.kts b/data/similar/api/build.gradle.kts index 3a1ce738c..cc0798de1 100644 --- a/data/similar/api/build.gradle.kts +++ b/data/similar/api/build.gradle.kts @@ -1,27 +1,22 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - api(projects.core.networkutil) - api(projects.core.database) - implementation(projects.data.shows.api) + commonMain { + dependencies { + api(projects.core.networkutil) + api(projects.core.database) + implementation(projects.data.shows.api) - api(libs.coroutines.core) - api(libs.kotlinx.atomicfu) - api(libs.store5) + api(libs.coroutines.core) + api(libs.kotlinx.atomicfu) + api(libs.store5) + } } - } } -android { - namespace = "com.thomaskioko.tvmaniac.similar.api" -} diff --git a/data/similar/implementation/build.gradle.kts b/data/similar/implementation/build.gradle.kts index b8f788604..c3bd775d3 100644 --- a/data/similar/implementation/build.gradle.kts +++ b/data/similar/implementation/build.gradle.kts @@ -1,32 +1,31 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } - kotlin { - android() - ios() - sourceSets { - - sourceSets["commonMain"].dependencies { - implementation(projects.core.tmdbApi.api) - implementation(projects.core.traktApi.api) - implementation(projects.core.util) - implementation(projects.data.requestManager.api) - implementation(projects.data.similar.api) - implementation(projects.data.shows.api) - - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) + commonMain { + dependencies { + implementation(projects.core.tmdbApi.api) + implementation(projects.core.traktApi.api) + implementation(projects.core.util) + implementation(projects.data.requestManager.api) + implementation(projects.data.similar.api) + implementation(projects.data.shows.api) + + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + } } - sourceSets["commonTest"].dependencies { - implementation(kotlin("test")) - implementation(libs.turbine) - implementation(libs.kotest.assertions) - implementation(libs.coroutines.test) + commonTest { + dependencies { + implementation(kotlin("test")) + implementation(libs.turbine) + implementation(libs.kotest.assertions) + implementation(libs.coroutines.test) + } } } } @@ -35,7 +34,3 @@ dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) } - -android { - namespace = "com.thomaskioko.tvmaniac.similar.implementation" -} diff --git a/data/similar/testing/build.gradle.kts b/data/similar/testing/build.gradle.kts index 31e72f0a5..928de2349 100644 --- a/data/similar/testing/build.gradle.kts +++ b/data/similar/testing/build.gradle.kts @@ -1,24 +1,16 @@ -import org.jetbrains.kotlin.js.translate.context.Namer.kotlin - plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.database) - implementation(projects.core.util) - implementation(projects.data.similar.api) - implementation(libs.coroutines.core) + commonMain { + dependencies { + implementation(projects.core.database) + implementation(projects.core.util) + implementation(projects.data.similar.api) + implementation(libs.coroutines.core) + } } - } -} - -android { - namespace = "com.thomaskioko.tvmaniac.similarshows.testing" } \ No newline at end of file diff --git a/data/trailers/api/build.gradle.kts b/data/trailers/api/build.gradle.kts index ee61001c0..694d850e9 100644 --- a/data/trailers/api/build.gradle.kts +++ b/data/trailers/api/build.gradle.kts @@ -1,24 +1,18 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } 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) - api(libs.coroutines.core) - api(libs.kotlinx.atomicfu) - api(libs.store5) + api(libs.coroutines.core) + api(libs.kotlinx.atomicfu) + api(libs.store5) + } } - } } - -android { - namespace = "com.thomaskioko.tvmaniac.trailers.api" -} diff --git a/data/trailers/implementation/build.gradle.kts b/data/trailers/implementation/build.gradle.kts index 751ee0a78..b3df2065e 100644 --- a/data/trailers/implementation/build.gradle.kts +++ b/data/trailers/implementation/build.gradle.kts @@ -1,34 +1,27 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } - kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.tmdbApi.api) - implementation(projects.core.util) - implementation(projects.data.requestManager.api) - implementation(projects.data.shows.api) - implementation(projects.data.trailers.api) + commonMain { + dependencies { + implementation(projects.core.tmdbApi.api) + implementation(projects.core.util) + implementation(projects.data.requestManager.api) + implementation(projects.data.shows.api) + implementation(projects.data.trailers.api) - implementation(libs.kermit) - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) + implementation(libs.kermit) + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + } } } } dependencies { - add("kspAndroid", libs.kotlinInject.compiler) add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) -} - -android { - namespace = "com.thomaskioko.tvmaniac.data.trailers.implementation" } \ No newline at end of file diff --git a/data/trailers/testing/build.gradle.kts b/data/trailers/testing/build.gradle.kts index a489d8fd7..1a84e1fe5 100644 --- a/data/trailers/testing/build.gradle.kts +++ b/data/trailers/testing/build.gradle.kts @@ -1,23 +1,18 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.database) - implementation(projects.core.util) - implementation(projects.data.trailers.api) + commonMain { + dependencies { + implementation(projects.core.database) + implementation(projects.core.util) + implementation(projects.data.trailers.api) - implementation(libs.coroutines.core) + implementation(libs.coroutines.core) + } } } -} - -android { - namespace = "com.thomaskioko.tvmaniac.trailers.testing" } \ No newline at end of file diff --git a/data/watchlist/api/build.gradle.kts b/data/watchlist/api/build.gradle.kts index ff3507130..ea55b9cd9 100644 --- a/data/watchlist/api/build.gradle.kts +++ b/data/watchlist/api/build.gradle.kts @@ -1,21 +1,16 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } 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) - api(libs.coroutines.core) + api(libs.coroutines.core) + } } } } - -android { - namespace = "com.thomaskioko.tvmaniac.watchlist.api" -} diff --git a/data/watchlist/implementation/build.gradle.kts b/data/watchlist/implementation/build.gradle.kts index 41506061c..8165e1918 100644 --- a/data/watchlist/implementation/build.gradle.kts +++ b/data/watchlist/implementation/build.gradle.kts @@ -1,37 +1,29 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - - sourceSets["commonMain"].dependencies { - - api(libs.coroutines.core) - - implementation(projects.core.database) - implementation(projects.core.traktApi.api) - implementation(projects.core.util) - implementation(projects.data.category.api) - implementation(projects.data.profile.api) - implementation(projects.data.watchlist.api) - - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) + commonMain { + dependencies { + api(libs.coroutines.core) + + implementation(projects.core.database) + implementation(projects.core.traktApi.api) + implementation(projects.core.util) + implementation(projects.data.category.api) + implementation(projects.data.profile.api) + implementation(projects.data.watchlist.api) + + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + } } - } } dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) -} - -android { - namespace = "com.thomaskioko.tvmaniac.watchlist.implementation" } \ No newline at end of file diff --git a/data/watchlist/testing/build.gradle.kts b/data/watchlist/testing/build.gradle.kts index 85306f2c9..8f640d8fb 100644 --- a/data/watchlist/testing/build.gradle.kts +++ b/data/watchlist/testing/build.gradle.kts @@ -1,22 +1,17 @@ plugins { - id("tvmaniac.kmm.library") + id("plugin.tvmaniac.multiplatform") } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.database) - implementation(projects.core.util) - implementation(projects.data.watchlist.api) + commonMain { + dependencies { + implementation(projects.core.database) + implementation(projects.core.util) + implementation(projects.data.watchlist.api) - implementation(libs.coroutines.core) + implementation(libs.coroutines.core) + } } } } - -android { - namespace = "com.thomaskioko.tvmaniac.watchlist.testing" -} diff --git a/gradle.properties b/gradle.properties index d05de4cec..664bfc1b9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,7 +22,6 @@ android.defaults.buildfeatures.buildconfig=false #KMM kotlin.mpp.stability.nowarn=true kotlin.mpp.androidSourceSetLayoutVersion=2 -kotlin.mpp.hierarchicalStructureSupport=false #iOS xcodeproj=./ios diff --git a/presentation/discover/build.gradle.kts b/presentation/discover/build.gradle.kts index f27e28fab..d29d8a60e 100644 --- a/presentation/discover/build.gradle.kts +++ b/presentation/discover/build.gradle.kts @@ -1,24 +1,34 @@ plugins { - id("tvmaniac.kmm.domain") + id("plugin.tvmaniac.multiplatform") + alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.util) - implementation(projects.data.category.api) - implementation(projects.data.showimages.api) - implementation(projects.data.shows.api) + commonMain { + dependencies { + implementation(projects.core.util) + implementation(projects.data.category.api) + implementation(projects.data.showimages.api) + implementation(projects.data.shows.api) - implementation(libs.kotlinx.collections) + implementation(libs.flowredux) + implementation(libs.kotlinInject.runtime) + implementation(libs.kotlinx.collections) + } } - sourceSets["commonTest"].dependencies { - implementation(projects.data.showimages.testing) - implementation(projects.data.shows.testing) + commonTest { + dependencies { + implementation(kotlin("test")) + + implementation(projects.data.showimages.testing) + implementation(projects.data.shows.testing) + + implementation(libs.coroutines.test) + implementation(libs.kotest.assertions) + implementation(libs.turbine) + } } } } @@ -27,7 +37,3 @@ dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) } - -android { - namespace = "com.thomaskioko.tvmaniac.presentation.discover" -} diff --git a/presentation/profile/build.gradle.kts b/presentation/profile/build.gradle.kts index 4cd045fa8..5297c3582 100644 --- a/presentation/profile/build.gradle.kts +++ b/presentation/profile/build.gradle.kts @@ -1,26 +1,34 @@ plugins { - id("tvmaniac.kmm.domain") + id("plugin.tvmaniac.multiplatform") + alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.traktAuth.api) - implementation(projects.data.profile.api) - implementation(projects.data.profilestats.api) + commonMain { + dependencies { + implementation(projects.core.traktAuth.api) + implementation(projects.data.profile.api) + implementation(projects.data.profilestats.api) - implementation(libs.kotlinInject.runtime) - implementation(libs.sqldelight.extensions) + implementation(libs.flowredux) + implementation(libs.kotlinInject.runtime) + implementation(libs.sqldelight.extensions) + } } - sourceSets["commonTest"].dependencies { - implementation(projects.core.datastore.testing) - implementation(projects.data.profile.testing) - implementation(projects.core.traktAuth.testing) + commonTest { + dependencies { + implementation(kotlin("test")) + implementation(projects.core.datastore.testing) + implementation(projects.data.profile.testing) + implementation(projects.core.traktAuth.testing) + + implementation(libs.coroutines.test) + implementation(libs.kotest.assertions) + implementation(libs.turbine) + } } } } @@ -29,7 +37,3 @@ dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) } - -android { - namespace = "com.thomaskioko.tvmaniac.presentation.profile" -} diff --git a/presentation/seasondetails/build.gradle.kts b/presentation/seasondetails/build.gradle.kts index 3e3e4081f..797a389a7 100644 --- a/presentation/seasondetails/build.gradle.kts +++ b/presentation/seasondetails/build.gradle.kts @@ -1,22 +1,33 @@ plugins { - id("tvmaniac.kmm.domain") + id("plugin.tvmaniac.multiplatform") + alias(libs.plugins.ksp) } kotlin { - android() - ios() sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.data.episodeimages.api) - implementation(projects.data.episodes.api) - implementation(projects.data.seasondetails.api) + commonMain { + dependencies { + implementation(projects.data.episodeimages.api) + implementation(projects.data.episodes.api) + implementation(projects.data.seasondetails.api) + + implementation(libs.flowredux) + implementation(libs.kotlinInject.runtime) + } } - sourceSets["commonTest"].dependencies { - implementation(projects.data.episodeimages.testing) - implementation(projects.data.seasondetails.testing) + commonTest { + dependencies { + implementation(kotlin("test")) + implementation(projects.data.episodeimages.testing) + implementation(projects.data.seasondetails.testing) + + implementation(libs.coroutines.test) + implementation(libs.kotest.assertions) + implementation(libs.turbine) + } } } } @@ -25,7 +36,3 @@ dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) } - -android { - namespace = "com.thomaskioko.tvmaniac.presentation.seasondetails" -} diff --git a/presentation/settings/build.gradle.kts b/presentation/settings/build.gradle.kts index 0ebb1dbd1..8ac48f990 100644 --- a/presentation/settings/build.gradle.kts +++ b/presentation/settings/build.gradle.kts @@ -1,23 +1,32 @@ plugins { - id("tvmaniac.kmm.domain") + id("plugin.tvmaniac.multiplatform") + alias(libs.plugins.ksp) } - kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.datastore.api) - implementation(projects.data.profile.api) - implementation(projects.core.traktAuth.api) + commonMain { + dependencies { + implementation(projects.core.datastore.api) + implementation(projects.data.profile.api) + implementation(projects.core.traktAuth.api) + + implementation(libs.flowredux) + implementation(libs.kotlinInject.runtime) + } } - sourceSets["commonTest"].dependencies { - implementation(projects.core.datastore.testing) - implementation(projects.data.profile.testing) - implementation(projects.core.traktAuth.testing) + commonTest { + dependencies { + implementation(kotlin("test")) + implementation(projects.core.datastore.testing) + implementation(projects.data.profile.testing) + implementation(projects.core.traktAuth.testing) + + implementation(libs.coroutines.test) + implementation(libs.kotest.assertions) + implementation(libs.turbine) + } } } } @@ -26,7 +35,3 @@ dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) } - -android { - namespace = "com.thomaskioko.tvmaniac.presentation.settings" -} diff --git a/presentation/show-details/build.gradle.kts b/presentation/show-details/build.gradle.kts index 16acf86f6..2ad3a9b92 100644 --- a/presentation/show-details/build.gradle.kts +++ b/presentation/show-details/build.gradle.kts @@ -1,29 +1,40 @@ plugins { - id("tvmaniac.kmm.domain") + id("plugin.tvmaniac.multiplatform") + alias(libs.plugins.ksp) } kotlin { - android() - ios() sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.core.util) - implementation(projects.data.seasons.api) - implementation(projects.data.similar.api) - implementation(projects.data.trailers.api) - implementation(projects.data.shows.api) - implementation(projects.data.watchlist.api) + commonMain { + dependencies { + implementation(projects.core.util) + implementation(projects.data.seasons.api) + implementation(projects.data.similar.api) + implementation(projects.data.trailers.api) + implementation(projects.data.shows.api) + implementation(projects.data.watchlist.api) + implementation(libs.flowredux) + implementation(libs.kotlinInject.runtime) + + } } - sourceSets["commonTest"].dependencies { - implementation(projects.data.shows.testing) - implementation(projects.data.seasons.testing) - implementation(projects.data.similar.testing) - implementation(projects.data.trailers.testing) - implementation(projects.data.watchlist.testing) + commonTest { + dependencies { + implementation(kotlin("test")) + implementation(projects.data.shows.testing) + implementation(projects.data.seasons.testing) + implementation(projects.data.similar.testing) + implementation(projects.data.trailers.testing) + implementation(projects.data.watchlist.testing) + + implementation(libs.coroutines.test) + implementation(libs.kotest.assertions) + implementation(libs.turbine) + } } } } @@ -31,8 +42,4 @@ kotlin { dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) -} - -android { - namespace = "com.thomaskioko.tvmaniac.presentation.showdetails" } \ No newline at end of file diff --git a/presentation/trailers/build.gradle.kts b/presentation/trailers/build.gradle.kts index 79d267e35..9c46b3a67 100644 --- a/presentation/trailers/build.gradle.kts +++ b/presentation/trailers/build.gradle.kts @@ -1,30 +1,35 @@ plugins { - id("tvmaniac.kmm.domain") + id("plugin.tvmaniac.multiplatform") + alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.data.trailers.api) - } + commonMain { + dependencies { + implementation(projects.data.trailers.api) - sourceSets["commonTest"].dependencies { - implementation(projects.data.trailers.testing) + implementation(libs.flowredux) + implementation(libs.kotlinInject.runtime) + } } + commonTest { + dependencies { + implementation(kotlin("test")) + implementation(projects.data.trailers.testing) + + implementation(libs.coroutines.test) + implementation(libs.kotest.assertions) + implementation(libs.turbine) + } + } } } dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) -} - -android { - namespace = "com.thomaskioko.tvmaniac.presentation.trailers" -} +} \ No newline at end of file diff --git a/presentation/watchlist/build.gradle.kts b/presentation/watchlist/build.gradle.kts index 536532ed2..9106a994f 100644 --- a/presentation/watchlist/build.gradle.kts +++ b/presentation/watchlist/build.gradle.kts @@ -1,21 +1,30 @@ plugins { - id("tvmaniac.kmm.domain") + id("plugin.tvmaniac.multiplatform") + alias(libs.plugins.ksp) } kotlin { - android() - ios() - sourceSets { - sourceSets["commonMain"].dependencies { - implementation(projects.data.watchlist.api) - } + commonMain { + dependencies { + implementation(projects.data.watchlist.api) - sourceSets["commonTest"].dependencies { - implementation(projects.data.watchlist.testing) + implementation(libs.flowredux) + implementation(libs.kotlinInject.runtime) + } } + commonTest { + dependencies { + implementation(kotlin("test")) + implementation(projects.data.watchlist.testing) + + implementation(libs.coroutines.test) + implementation(libs.kotest.assertions) + implementation(libs.turbine) + } + } } } @@ -23,7 +32,3 @@ dependencies { add("kspIosX64", libs.kotlinInject.compiler) add("kspIosArm64", libs.kotlinInject.compiler) } - -android { - namespace = "com.thomaskioko.tvmaniac.presentation.watchlist" -} diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index b09e9bc30..9a5ae459d 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("tvmaniac.kmm.library") + id("org.jetbrains.kotlin.multiplatform") id("maven-publish") alias(libs.plugins.kmmbridge) alias(libs.plugins.ksp) @@ -9,7 +9,6 @@ plugins { version = libs.versions.shared.module.version.get() kotlin { - android() listOf( iosX64(), @@ -36,7 +35,7 @@ kotlin { sourceSets { - val commonMain by getting { + commonMain { dependencies { api(projects.core.datastore.api) @@ -84,13 +83,10 @@ kotlin { } } - val commonTest by getting - val androidMain by getting - val androidUnitTest by getting val iosX64Main by getting val iosArm64Main by getting val iosMain by creating { - dependsOn(commonMain) + dependsOn(commonMain.get()) iosX64Main.dependsOn(this) iosArm64Main.dependsOn(this) } @@ -102,10 +98,6 @@ dependencies { add("kspIosArm64", libs.kotlinInject.compiler) } -android { - namespace = "com.thomaskioko.tvmaniac.shared.base" -} - addGithubPackagesRepository() kmmbridge { From 51d21489125c6bb345f05af68b66513c340dd5ad Mon Sep 17 00:00:00 2001 From: Thomas Kioko Date: Sat, 4 Nov 2023 01:36:51 +0100 Subject: [PATCH 4/6] Spotless: Add blank line to classes. --- .../kotlin/com/thomaskioko/tvmaniac/db/DatabaseComponent.kt | 2 +- .../kotlin/com/thomaskioko/tvmaniac/core/db/BaseDatabaseTest.kt | 2 +- .../core/networkutil/inject/NetworkPlatformComponent.kt | 2 +- .../tvmaniac/tmdb/implementation/TmdbPlatformComponent.kt | 2 +- .../thomaskioko/tvmaniac/util/inject/UtilPlatformComponent.kt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/database/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/db/DatabaseComponent.kt b/core/database/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/db/DatabaseComponent.kt index 92f1b2bea..312227327 100644 --- a/core/database/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/db/DatabaseComponent.kt +++ b/core/database/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/db/DatabaseComponent.kt @@ -1,3 +1,3 @@ package com.thomaskioko.tvmaniac.db -actual interface DatabaseComponent \ No newline at end of file +actual interface DatabaseComponent diff --git a/core/database/src/jvmTest/kotlin/com/thomaskioko/tvmaniac/core/db/BaseDatabaseTest.kt b/core/database/src/jvmTest/kotlin/com/thomaskioko/tvmaniac/core/db/BaseDatabaseTest.kt index 453e826f7..d58e7e84c 100644 --- a/core/database/src/jvmTest/kotlin/com/thomaskioko/tvmaniac/core/db/BaseDatabaseTest.kt +++ b/core/database/src/jvmTest/kotlin/com/thomaskioko/tvmaniac/core/db/BaseDatabaseTest.kt @@ -6,4 +6,4 @@ import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver actual fun inMemorySqlDriver(): SqlDriver = JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY).apply { TvManiacDatabase.Schema.create(this) - } \ No newline at end of file + } diff --git a/core/networkutil/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/core/networkutil/inject/NetworkPlatformComponent.kt b/core/networkutil/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/core/networkutil/inject/NetworkPlatformComponent.kt index 3e3793741..5bea96170 100644 --- a/core/networkutil/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/core/networkutil/inject/NetworkPlatformComponent.kt +++ b/core/networkutil/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/core/networkutil/inject/NetworkPlatformComponent.kt @@ -1,3 +1,3 @@ package com.thomaskioko.tvmaniac.core.networkutil.inject -actual interface NetworkPlatformComponent \ No newline at end of file +actual interface NetworkPlatformComponent diff --git a/core/tmdb-api/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/tmdb/implementation/TmdbPlatformComponent.kt b/core/tmdb-api/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/tmdb/implementation/TmdbPlatformComponent.kt index d5870c4fe..fbd673b97 100644 --- a/core/tmdb-api/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/tmdb/implementation/TmdbPlatformComponent.kt +++ b/core/tmdb-api/implementation/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/tmdb/implementation/TmdbPlatformComponent.kt @@ -1,3 +1,3 @@ package com.thomaskioko.tvmaniac.tmdb.implementation -actual interface TmdbPlatformComponent \ No newline at end of file +actual interface TmdbPlatformComponent diff --git a/core/util/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/util/inject/UtilPlatformComponent.kt b/core/util/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/util/inject/UtilPlatformComponent.kt index e9a7a8f39..7fa8c4749 100644 --- a/core/util/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/util/inject/UtilPlatformComponent.kt +++ b/core/util/src/jvmMain/kotlin/com/thomaskioko/tvmaniac/util/inject/UtilPlatformComponent.kt @@ -1,3 +1,3 @@ package com.thomaskioko.tvmaniac.util.inject -actual interface UtilPlatformComponent \ No newline at end of file +actual interface UtilPlatformComponent From 6c2fc5485c8ca5d02f95ba5b8bd2eb8ac472be51 Mon Sep 17 00:00:00 2001 From: Thomas Kioko Date: Sat, 4 Nov 2023 01:37:07 +0100 Subject: [PATCH 5/6] Bump up java version to 18. --- .github/workflows/build.yml | 2 +- .github/workflows/kmm-bridge-spm-publish.yml | 2 +- README.md | 2 +- core/database/build.gradle.kts | 2 +- .../datastore/implementation/build.gradle.kts | 2 +- core/networkutil/build.gradle.kts | 2 +- core/tmdb-api/implementation/build.gradle.kts | 2 +- .../trakt-api/implementation/build.gradle.kts | 2 +- .../inject/TraktPlatformComponent.kt | 3 +++ core/trakt-auth/api/build.gradle.kts | 2 +- .../implementation/build.gradle.kts | 2 +- core/util/build.gradle.kts | 2 +- tooling/plugins/build.gradle.kts | 10 +++++--- .../thomaskioko/tvmaniac/extensions/Kotlin.kt | 2 +- .../tvmaniac/plugins/AndroidLibraryPlugin.kt | 19 +++++++++++++-- .../tvmaniac/plugins/KotlinAndroidPlugin.kt | 24 +++++++++++++++++++ 16 files changed, 63 insertions(+), 17 deletions(-) create mode 100644 core/trakt-api/implementation/src/jvmMain/kotlin/com/thomaskioko/trakt/service/implementation/inject/TraktPlatformComponent.kt create mode 100644 tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/KotlinAndroidPlugin.kt diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 58861cc82..65a770376 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,7 +33,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 17 + java-version: 18 - name: Setup Gradle uses: gradle/gradle-build-action@v2.4.2 diff --git a/.github/workflows/kmm-bridge-spm-publish.yml b/.github/workflows/kmm-bridge-spm-publish.yml index 18c8800a3..9c961ecb5 100644 --- a/.github/workflows/kmm-bridge-spm-publish.yml +++ b/.github/workflows/kmm-bridge-spm-publish.yml @@ -5,4 +5,4 @@ jobs: call-kmmbridge-publish: uses: touchlab/KMMBridgeGithubWorkflow/.github/workflows/faktorybuildbranches.yml@v0.9 with: - jvmVersion: 17 + jvmVersion: 18 diff --git a/README.md b/README.md index 51083712b..9643fb7a0 100644 --- a/README.md +++ b/README.md @@ -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). diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts index 3fea17788..ff8b87536 100644 --- a/core/database/build.gradle.kts +++ b/core/database/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.kotlin.android") id("plugin.tvmaniac.multiplatform") alias(libs.plugins.sqldelight) alias(libs.plugins.ksp) diff --git a/core/datastore/implementation/build.gradle.kts b/core/datastore/implementation/build.gradle.kts index 2d1aa6508..973e3a649 100644 --- a/core/datastore/implementation/build.gradle.kts +++ b/core/datastore/implementation/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.kotlin.android") id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } diff --git a/core/networkutil/build.gradle.kts b/core/networkutil/build.gradle.kts index e0d672d55..07fd7a276 100644 --- a/core/networkutil/build.gradle.kts +++ b/core/networkutil/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.kotlin.android") id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } diff --git a/core/tmdb-api/implementation/build.gradle.kts b/core/tmdb-api/implementation/build.gradle.kts index 5b2cdaf7b..2244ed949 100644 --- a/core/tmdb-api/implementation/build.gradle.kts +++ b/core/tmdb-api/implementation/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.kotlin.android") id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) alias(libs.plugins.serialization) diff --git a/core/trakt-api/implementation/build.gradle.kts b/core/trakt-api/implementation/build.gradle.kts index ea7afe2cc..f5caedf3b 100644 --- a/core/trakt-api/implementation/build.gradle.kts +++ b/core/trakt-api/implementation/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.kotlin.android") id("plugin.tvmaniac.multiplatform") alias(libs.plugins.serialization) alias(libs.plugins.ksp) diff --git a/core/trakt-api/implementation/src/jvmMain/kotlin/com/thomaskioko/trakt/service/implementation/inject/TraktPlatformComponent.kt b/core/trakt-api/implementation/src/jvmMain/kotlin/com/thomaskioko/trakt/service/implementation/inject/TraktPlatformComponent.kt new file mode 100644 index 000000000..4680ffb42 --- /dev/null +++ b/core/trakt-api/implementation/src/jvmMain/kotlin/com/thomaskioko/trakt/service/implementation/inject/TraktPlatformComponent.kt @@ -0,0 +1,3 @@ +package com.thomaskioko.trakt.service.implementation.inject + +actual interface TraktPlatformComponent \ No newline at end of file diff --git a/core/trakt-auth/api/build.gradle.kts b/core/trakt-auth/api/build.gradle.kts index d9e755327..d4611249a 100644 --- a/core/trakt-auth/api/build.gradle.kts +++ b/core/trakt-auth/api/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.kotlin.android") id("plugin.tvmaniac.multiplatform") } diff --git a/core/trakt-auth/implementation/build.gradle.kts b/core/trakt-auth/implementation/build.gradle.kts index bfeae569a..f59883479 100644 --- a/core/trakt-auth/implementation/build.gradle.kts +++ b/core/trakt-auth/implementation/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.kotlin.android") id("plugin.tvmaniac.multiplatform") alias(libs.plugins.ksp) } diff --git a/core/util/build.gradle.kts b/core/util/build.gradle.kts index b7fdfb4c1..f286e7d46 100644 --- a/core/util/build.gradle.kts +++ b/core/util/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("plugin.tvmaniac.android.library") + id("plugin.tvmaniac.kotlin.android") id("plugin.tvmaniac.multiplatform") alias(libs.plugins.serialization) alias(libs.plugins.ksp) diff --git a/tooling/plugins/build.gradle.kts b/tooling/plugins/build.gradle.kts index 565fc94e5..83b1c14a7 100644 --- a/tooling/plugins/build.gradle.kts +++ b/tooling/plugins/build.gradle.kts @@ -5,11 +5,11 @@ plugins { group = "com.thomaskioko.tvmaniac.plugins" java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_18 + targetCompatibility = JavaVersion.VERSION_18 toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) + languageVersion.set(JavaLanguageVersion.of(18)) } } @@ -32,6 +32,10 @@ gradlePlugin { id = "plugin.tvmaniac.android.library" implementationClass = "com.thomaskioko.tvmaniac.plugins.AndroidLibraryPlugin" } + register("kotlinAndroid") { + id = "plugin.tvmaniac.kotlin.android" + implementationClass = "com.thomaskioko.tvmaniac.plugins.KotlinAndroidPlugin" + } register("androidComposeLibrary") { id = "tvmaniac.compose.library" implementationClass = "com.thomaskioko.tvmaniac.plugins.ComposeLibraryPlugin" diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Kotlin.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Kotlin.kt index 090d5a830..5a1a16cb3 100644 --- a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Kotlin.kt +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/extensions/Kotlin.kt @@ -4,4 +4,4 @@ import org.gradle.api.Project fun Project.configureKotlin() { configureJava() -} +} \ No newline at end of file diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/AndroidLibraryPlugin.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/AndroidLibraryPlugin.kt index 429dd4160..b30db5d84 100644 --- a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/AndroidLibraryPlugin.kt +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/AndroidLibraryPlugin.kt @@ -1,17 +1,32 @@ package com.thomaskioko.tvmaniac.plugins +import com.android.build.gradle.LibraryExtension +import com.thomaskioko.tvmaniac.extensions.Versions import com.thomaskioko.tvmaniac.extensions.configureAndroid +import com.thomaskioko.tvmaniac.extensions.configureFlavors +import org.gradle.api.JavaVersion import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure class AndroidLibraryPlugin : Plugin { override fun apply(target: Project) { with(target) { with(pluginManager) { apply("com.android.library") + apply("org.jetbrains.kotlin.android") } - configureAndroid() + extensions.configure { + compileOptions { + sourceCompatibility = JavaVersion.VERSION_18 + targetCompatibility = JavaVersion.VERSION_18 + } + + configureAndroid() + configureFlavors(this) + defaultConfig.targetSdk = Versions.TARGET_SDK + } } } -} \ No newline at end of file +} diff --git a/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/KotlinAndroidPlugin.kt b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/KotlinAndroidPlugin.kt new file mode 100644 index 000000000..148119379 --- /dev/null +++ b/tooling/plugins/src/main/kotlin/com/thomaskioko/tvmaniac/plugins/KotlinAndroidPlugin.kt @@ -0,0 +1,24 @@ +package com.thomaskioko.tvmaniac.plugins + +import com.android.build.gradle.LibraryExtension +import com.thomaskioko.tvmaniac.extensions.Versions +import com.thomaskioko.tvmaniac.extensions.configureKotlin +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure + +class KotlinAndroidPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.android.library") + } + + configureKotlin() + + extensions.configure { + compileSdk = Versions.COMPILE_SDK + } + } + } +} \ No newline at end of file From d2630320f2b8aec00e636c32db62ac3179f3740b Mon Sep 17 00:00:00 2001 From: Thomas Kioko Date: Sat, 4 Nov 2023 18:31:23 +0100 Subject: [PATCH 6/6] Fix spotless issue. --- .../service/implementation/inject/TraktPlatformComponent.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/trakt-api/implementation/src/jvmMain/kotlin/com/thomaskioko/trakt/service/implementation/inject/TraktPlatformComponent.kt b/core/trakt-api/implementation/src/jvmMain/kotlin/com/thomaskioko/trakt/service/implementation/inject/TraktPlatformComponent.kt index 4680ffb42..7813e0456 100644 --- a/core/trakt-api/implementation/src/jvmMain/kotlin/com/thomaskioko/trakt/service/implementation/inject/TraktPlatformComponent.kt +++ b/core/trakt-api/implementation/src/jvmMain/kotlin/com/thomaskioko/trakt/service/implementation/inject/TraktPlatformComponent.kt @@ -1,3 +1,3 @@ package com.thomaskioko.trakt.service.implementation.inject -actual interface TraktPlatformComponent \ No newline at end of file +actual interface TraktPlatformComponent