diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts new file mode 100644 index 000000000..f7bccd44f --- /dev/null +++ b/build-logic/convention/build.gradle.kts @@ -0,0 +1,58 @@ +plugins { + `kotlin-dsl` +} + +group = "com.livefast.eattrash.raccoonforfriendica.buildlogic" + +repositories { + google() + mavenCentral() + gradlePluginPortal() +} + +dependencies { + compileOnly(libs.gradle) + compileOnly(libs.kotlin.gradlePlugin) + compileOnly(libs.compose.gradlePlugin) + compileOnly(libs.ksp.gradlePlugin) + implementation(libs.kotlinpoet) +} + +gradlePlugin { + plugins { + register("sentryDsn") { + id = "com.livefast.eattrash.sentryDsn" + implementationClass = "plugins.SentryDsnPlugin" + } + + register("composeMultiplatform") { + id = "com.livefast.eattrash.composeMultiplatform" + implementationClass = "plugins.ComposeMultiplatformPlugin" + } + + register("koinWithKsp") { + id = "com.livefast.eattrash.koinWithKsp" + implementationClass = "plugins.KoinWithKspPlugin" + } + + register("kotlinMultiplatform") { + id = "com.livefast.eattrash.kotlinMultiplatform" + implementationClass = "plugins.KotlinMultiplatformPlugin" + } + + register("serializationPlugin") { + id = "com.livefast.eattrash.serialization" + implementationClass = "plugins.SerializationPlugin" + } + + register("testPlugin") { + id = "com.livefast.eattrash.test" + implementationClass = "plugins.TestPlugin" + } + + register("uiTestPlugin") { + id = "com.livefast.eattrash.uiTest" + implementationClass = "plugins.UiTestPlugin" + } + } +} diff --git a/build-logic/convention/src/main/kotlin/extensions/ConfigureComposeMultiplatform.kt b/build-logic/convention/src/main/kotlin/extensions/ConfigureComposeMultiplatform.kt new file mode 100644 index 000000000..4c78d060e --- /dev/null +++ b/build-logic/convention/src/main/kotlin/extensions/ConfigureComposeMultiplatform.kt @@ -0,0 +1,20 @@ +package extensions + +import org.gradle.api.Project +import org.jetbrains.compose.ComposePlugin +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension + +internal fun Project.configureComposeMultiplatform(extension: KotlinMultiplatformExtension) = + extension.apply { + val composeDeps = extensions.getByType(ComposePlugin.Dependencies::class.java) + sourceSets.apply { + commonMain { + dependencies { + implementation(composeDeps.runtime) + implementation(composeDeps.foundation) + implementation(composeDeps.material3) + implementation(composeDeps.materialIconsExtended) + } + } + } + } diff --git a/build-logic/convention/src/main/kotlin/extensions/ConfigureKoinAnnotations.kt b/build-logic/convention/src/main/kotlin/extensions/ConfigureKoinAnnotations.kt new file mode 100644 index 000000000..33ef815c3 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/extensions/ConfigureKoinAnnotations.kt @@ -0,0 +1,24 @@ +package extensions + +import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import utils.dependency +import utils.libs + +internal fun Project.configureKoinAnnotations(extension: KotlinMultiplatformExtension) = + extension.apply { + compilerOptions { + freeCompilerArgs.add("-Xexpect-actual-classes") + } + + sourceSets.apply { + commonMain { + dependencies { + implementation(libs.findLibrary("koin-core").dependency) + api(libs.findLibrary("koin-annotations").dependency) + } + + kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") + } + } + } diff --git a/build-logic/convention/src/main/kotlin/extensions/ConfigureKotlinAndroid.kt b/build-logic/convention/src/main/kotlin/extensions/ConfigureKotlinAndroid.kt new file mode 100644 index 000000000..e2ba7d41b --- /dev/null +++ b/build-logic/convention/src/main/kotlin/extensions/ConfigureKotlinAndroid.kt @@ -0,0 +1,28 @@ +package extensions + +import com.android.build.gradle.LibraryExtension +import org.gradle.api.JavaVersion +import org.gradle.api.Project +import utils.PACKAGE_PREFIX +import utils.libs +import utils.version + +internal fun Project.configureKotlinAndroid(extension: LibraryExtension) = + extension.apply { + val moduleName = path.split(":").drop(1).joinToString(".") + namespace = if (moduleName.isNotEmpty()) "$PACKAGE_PREFIX.$moduleName" else PACKAGE_PREFIX + + compileSdk = libs.findVersion("android-compileSdk").version + defaultConfig { + minSdk = libs.findVersion("android-minSdk").version + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } + } diff --git a/build-logic/convention/src/main/kotlin/extensions/ConfigureKotlinMultiplatform.kt b/build-logic/convention/src/main/kotlin/extensions/ConfigureKotlinMultiplatform.kt new file mode 100644 index 000000000..f86a06b01 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/extensions/ConfigureKotlinMultiplatform.kt @@ -0,0 +1,40 @@ +package extensions + +import org.gradle.api.Project +import org.gradle.api.provider.Property +import org.gradle.kotlin.dsl.create +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension + +interface CustomKotlinMultiplatformExtension { + val additionalLinkerOptionForIos: Property +} + +internal fun Project.configureKotlinMultiplatform(extension: KotlinMultiplatformExtension) = + extension.apply { + applyDefaultHierarchyTemplate() + androidTarget { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } + } + + val moduleName = path.split(":").drop(1).joinToString(".") + val customExtension = + project.extensions + .create("customKotlinMultiplatformExtension") + val linkerOption = customExtension.additionalLinkerOptionForIos.getOrElse("") + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ).forEach { + it.binaries.framework { + baseName = moduleName + isStatic = true + if (linkerOption.isNotEmpty()) { + linkerOpts.add(linkerOption) + } + } + } + } diff --git a/build-logic/convention/src/main/kotlin/extensions/ConfigureTest.kt b/build-logic/convention/src/main/kotlin/extensions/ConfigureTest.kt new file mode 100644 index 000000000..392ae0400 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/extensions/ConfigureTest.kt @@ -0,0 +1,24 @@ +package extensions + +import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import utils.dependency +import utils.libs + +internal fun Project.configureTest(extension: KotlinMultiplatformExtension) = + extension.apply { + sourceSets.apply { + commonTest { + dependencies { + implementation(kotlin("test")) + implementation(libs.findLibrary("kotlinx-coroutines-test").dependency) + implementation(libs.findLibrary("turbine").dependency) + } + } + androidUnitTest { + dependencies { + implementation(project(":core:testutils")) + } + } + } + } diff --git a/build-logic/convention/src/main/kotlin/extensions/ConfigureUiTest.kt b/build-logic/convention/src/main/kotlin/extensions/ConfigureUiTest.kt new file mode 100644 index 000000000..9d64ff7c2 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/extensions/ConfigureUiTest.kt @@ -0,0 +1,43 @@ +package extensions + +import com.android.build.gradle.LibraryExtension +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies +import org.jetbrains.compose.ComposePlugin +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetTree +import utils.dependency +import utils.libs + +internal fun Project.configureUiTest(extension: KotlinMultiplatformExtension) = + extension.apply { + val composeDeps = extensions.getByType(ComposePlugin.Dependencies::class.java) + sourceSets.apply { + androidUnitTest { + dependencies { + @OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class) + implementation(composeDeps.uiTest) + implementation(libs.findLibrary("compose-ui-test").dependency) + implementation(libs.findLibrary("robolectric").dependency) + implementation(project(":core:testutils")) + } + } + } + androidTarget { + @OptIn(ExperimentalKotlinGradlePluginApi::class) + instrumentedTestVariant.sourceSetTree.set(KotlinSourceSetTree.test) + } + + dependencies { + add("debugImplementation", libs.findLibrary("compose-ui-test-manifest").dependency) + } + } + +internal fun Project.configureUiTestAndroid(extension: LibraryExtension) = + extension.apply { + defaultConfig { + testOptions.unitTests.isIncludeAndroidResources = true + testInstrumentationRunner = "org.robolectric.RobolectricTestRunner" + } + } diff --git a/build-logic/convention/src/main/kotlin/plugins/ComposeMultiplatformPlugin.kt b/build-logic/convention/src/main/kotlin/plugins/ComposeMultiplatformPlugin.kt new file mode 100644 index 000000000..c485997f0 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/plugins/ComposeMultiplatformPlugin.kt @@ -0,0 +1,23 @@ +package plugins + +import extensions.configureComposeMultiplatform +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import utils.libs +import utils.pluginId + +class ComposeMultiplatformPlugin : Plugin { + override fun apply(target: Project): Unit = + with(target) { + with(pluginManager) { + apply(libs.findPlugin("jetbrains-compose").pluginId) + apply(libs.findPlugin("compose-compiler").pluginId) + } + + extensions.configure( + KotlinMultiplatformExtension::class.java, + ::configureComposeMultiplatform, + ) + } +} diff --git a/build-logic/convention/src/main/kotlin/plugins/KoinWithKspPlugin.kt b/build-logic/convention/src/main/kotlin/plugins/KoinWithKspPlugin.kt new file mode 100644 index 000000000..002a9264a --- /dev/null +++ b/build-logic/convention/src/main/kotlin/plugins/KoinWithKspPlugin.kt @@ -0,0 +1,44 @@ +package plugins + +import com.google.devtools.ksp.gradle.KspExtension +import extensions.configureKoinAnnotations +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask +import utils.dependency +import utils.libs +import utils.pluginId + +class KoinWithKspPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply(libs.findPlugin("ksp").pluginId) + } + + extensions.configure( + KotlinMultiplatformExtension::class.java, + ::configureKoinAnnotations, + ) + + extensions.configure(KspExtension::class.java) { + arg("KOIN_DEFAULT_MODULE", "false") + } + + dependencies.apply { + add("kspCommonMainMetadata", libs.findLibrary("koin-ksp").dependency) + add("kspAndroid", libs.findLibrary("koin-ksp").dependency) + add("kspIosX64", libs.findLibrary("koin-ksp").dependency) + add("kspIosArm64", libs.findLibrary("koin-ksp").dependency) + add("kspIosSimulatorArm64", libs.findLibrary("koin-ksp").dependency) + } + + tasks.withType(KotlinCompilationTask::class.java).configureEach { + if (name != "kspCommonMainKotlinMetadata") { + dependsOn("kspCommonMainKotlinMetadata") + } + } + } + } +} diff --git a/build-logic/convention/src/main/kotlin/plugins/KotlinMultiplatformPlugin.kt b/build-logic/convention/src/main/kotlin/plugins/KotlinMultiplatformPlugin.kt new file mode 100644 index 000000000..3c1cdb905 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/plugins/KotlinMultiplatformPlugin.kt @@ -0,0 +1,29 @@ +package plugins + +import com.android.build.gradle.LibraryExtension +import extensions.configureKotlinAndroid +import extensions.configureKotlinMultiplatform +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import utils.libs +import utils.pluginId + +class KotlinMultiplatformPlugin : Plugin { + override fun apply(target: Project): Unit = + with(target) { + with(pluginManager) { + apply(libs.findPlugin("kotlin-multiplatform").pluginId) + apply(libs.findPlugin("android-library").pluginId) + } + + extensions.configure( + KotlinMultiplatformExtension::class.java, + ::configureKotlinMultiplatform, + ) + extensions.configure( + LibraryExtension::class.java, + ::configureKotlinAndroid, + ) + } +} diff --git a/build-logic/convention/src/main/kotlin/plugins/SentryDsnPlugin.kt b/build-logic/convention/src/main/kotlin/plugins/SentryDsnPlugin.kt new file mode 100644 index 000000000..43fd8725e --- /dev/null +++ b/build-logic/convention/src/main/kotlin/plugins/SentryDsnPlugin.kt @@ -0,0 +1,31 @@ +package plugins + +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import tasks.GenerateSentryConfigTask + +class SentryDsnPlugin : Plugin { + override fun apply(target: Project): Unit = + with(target) { + val codeGenerator = + project.tasks + .create("generateSentryConfig", GenerateSentryConfigTask::class.java) + .apply { + group = "generation" + description = "Generate Sentry configuration file" + } + extensions.configure { + sourceSets.apply { + commonMain { + kotlin.srcDir("build/generated/custom") + } + } + } + tasks.withType(KotlinCompile::class.java).configureEach { + dependsOn(codeGenerator) + } + } +} diff --git a/build-logic/convention/src/main/kotlin/plugins/SerializationPlugin.kt b/build-logic/convention/src/main/kotlin/plugins/SerializationPlugin.kt new file mode 100644 index 000000000..6192f29aa --- /dev/null +++ b/build-logic/convention/src/main/kotlin/plugins/SerializationPlugin.kt @@ -0,0 +1,29 @@ +package plugins + +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import utils.dependency +import utils.libs +import utils.pluginId + +class SerializationPlugin : Plugin { + override fun apply(target: Project): Unit = + with(target) { + with(pluginManager) { + apply(libs.findPlugin("ksp").pluginId) + apply(libs.findPlugin("kotlinx-serialization").pluginId) + } + extensions.configure( + KotlinMultiplatformExtension::class.java, + ) { + sourceSets.apply { + commonMain { + dependencies { + implementation(libs.findLibrary("kotlinx-serialization-json").dependency) + } + } + } + } + } +} diff --git a/build-logic/convention/src/main/kotlin/plugins/TestPlugin.kt b/build-logic/convention/src/main/kotlin/plugins/TestPlugin.kt new file mode 100644 index 000000000..981acaa6c --- /dev/null +++ b/build-logic/convention/src/main/kotlin/plugins/TestPlugin.kt @@ -0,0 +1,23 @@ +package plugins + +import extensions.configureTest +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import utils.libs +import utils.pluginId + +class TestPlugin : Plugin { + override fun apply(target: Project): Unit = + with(target) { + with(pluginManager) { + apply(libs.findPlugin("kotlinx-kover").pluginId) + apply(libs.findPlugin("ksp").pluginId) + apply(libs.findPlugin("mokkery").pluginId) + } + extensions.configure( + KotlinMultiplatformExtension::class.java, + ::configureTest, + ) + } +} diff --git a/build-logic/convention/src/main/kotlin/plugins/UiTestPlugin.kt b/build-logic/convention/src/main/kotlin/plugins/UiTestPlugin.kt new file mode 100644 index 000000000..2e71a5bf4 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/plugins/UiTestPlugin.kt @@ -0,0 +1,22 @@ +package plugins + +import com.android.build.gradle.LibraryExtension +import extensions.configureUiTest +import extensions.configureUiTestAndroid +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension + +class UiTestPlugin : Plugin { + override fun apply(target: Project): Unit = + with(target) { + extensions.configure( + KotlinMultiplatformExtension::class.java, + ::configureUiTest, + ) + extensions.configure( + LibraryExtension::class.java, + ::configureUiTestAndroid, + ) + } +} diff --git a/build-logic/convention/src/main/kotlin/tasks/GenerateSentryConfigTask.kt b/build-logic/convention/src/main/kotlin/tasks/GenerateSentryConfigTask.kt new file mode 100644 index 000000000..6367107a1 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/tasks/GenerateSentryConfigTask.kt @@ -0,0 +1,42 @@ +package tasks + +import com.squareup.kotlinpoet.FileSpec +import com.squareup.kotlinpoet.PropertySpec +import com.squareup.kotlinpoet.TypeSpec +import org.gradle.api.DefaultTask +import org.gradle.api.tasks.TaskAction +import utils.PACKAGE_PREFIX +import java.io.File +import java.util.Properties + +open class GenerateSentryConfigTask : DefaultTask() { + private val inputDirectory: File = project.projectDir.absoluteFile + + private val outputDirectory: File = + project.file("${project.layout.buildDirectory.asFile.get().path}/generated/custom") + + @TaskAction + fun generateSentryConfig() { + val props = loadProperties() + val dsn = props.getProperty("sentry_dsn") + val file = + FileSpec + .builder(packageName = PACKAGE_PREFIX, fileName = "SentryConfigurationValues") + .addType( + TypeSpec + .objectBuilder(name = "SentryConfigurationValues") + .addProperty( + PropertySpec + .builder(name = "DSN", type = String::class) + .initializer(format = "%S", dsn) + .build(), + ).build(), + ).build() + file.writeTo(outputDirectory) + } + + private fun loadProperties(): Properties = + File(inputDirectory, "build.properties").inputStream().use { + Properties().apply { load(it) } + } +} diff --git a/build-logic/convention/src/main/kotlin/utils/Constants.kt b/build-logic/convention/src/main/kotlin/utils/Constants.kt new file mode 100644 index 000000000..2e9c76000 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/utils/Constants.kt @@ -0,0 +1,3 @@ +package utils + +internal const val PACKAGE_PREFIX = "com.livefast.eattrash.raccoonforfriendica" diff --git a/build-logic/convention/src/main/kotlin/utils/Utils.kt b/build-logic/convention/src/main/kotlin/utils/Utils.kt new file mode 100644 index 000000000..1678793d9 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/utils/Utils.kt @@ -0,0 +1,18 @@ +package utils + +import org.gradle.api.Project +import org.gradle.api.artifacts.MinimalExternalModuleDependency +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.api.artifacts.VersionConstraint +import org.gradle.api.provider.Provider +import org.gradle.kotlin.dsl.getByType +import org.gradle.plugin.use.PluginDependency +import java.util.Optional + +internal val Project.libs get() = extensions.getByType().named("libs") + +internal val Optional>.pluginId get() = get().get().pluginId + +internal val Optional.version get() = get().requiredVersion.toInt() + +internal val Optional>.dependency get() = get().get() diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts new file mode 100644 index 000000000..1fab440da --- /dev/null +++ b/build-logic/settings.gradle.kts @@ -0,0 +1,12 @@ +dependencyResolutionManagement { + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") + +rootProject.name = "build-logic" +include(":convention") diff --git a/core/api/build.gradle.kts b/core/api/build.gradle.kts index 0d0eb50be..fa41a1d8f 100644 --- a/core/api/build.gradle.kts +++ b/core/api/build.gradle.kts @@ -1,39 +1,14 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.serialization") alias(libs.plugins.ktorfit) - alias(libs.plugins.ksp) - alias(libs.plugins.kotlinx.serialization) } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.api" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(libs.koin.core) - api(libs.koin.annotations) - implementation(libs.kotlinx.serialization.json) implementation(libs.ktor.contentnegotiation) implementation(libs.ktor.auth) implementation(libs.ktor.json) @@ -47,44 +22,3 @@ kotlin { } } } - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.api" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -dependencies { - add("kspCommonMainMetadata", libs.ktorfit.ksp) - add("kspAndroid", libs.ktorfit.ksp) - add("kspIosX64", libs.ktorfit.ksp) - add("kspIosArm64", libs.ktorfit.ksp) - add("kspIosSimulatorArm64", libs.ktorfit.ksp) - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -kotlin.sourceSets.commonMain { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/core/appearance/build.gradle.kts b/core/appearance/build.gradle.kts index 942595edb..a006b9b00 100644 --- a/core/appearance/build.gradle.kts +++ b/core/appearance/build.gradle.kts @@ -1,38 +1,12 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) - alias(libs.plugins.mokkery) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.serialization") + id("com.livefast.eattrash.test") } kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.appearance" - isStatic = true - } - } - - compilerOptions { - freeCompilerArgs.add("-Xexpect-actual-classes") - } - sourceSets { val androidMain by getting { dependencies { @@ -41,59 +15,11 @@ kotlin { } val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.materialKolor) implementation(projects.core.l10n) implementation(projects.core.resources) } } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - } - } - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.appearance" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/core/architecture/build.gradle.kts b/core/architecture/build.gradle.kts index 5e1803afc..ccdd6a014 100644 --- a/core/architecture/build.gradle.kts +++ b/core/architecture/build.gradle.kts @@ -1,29 +1,8 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) + id("com.livefast.eattrash.kotlinMultiplatform") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.architecture" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { @@ -32,17 +11,3 @@ kotlin { } } } - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.architecture" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} diff --git a/core/commonui/components/build.gradle.kts b/core/commonui/components/build.gradle.kts index fd27a7389..41417272a 100644 --- a/core/commonui/components/build.gradle.kts +++ b/core/commonui/components/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.commonui.components" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.coil.compose) implementation(libs.compose.colorpicker) implementation(libs.compose.multiplatform.media.player) @@ -51,39 +20,3 @@ kotlin { } } } - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.commonui.components" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -kotlin.sourceSets.commonMain { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/core/commonui/content/build.gradle.kts b/core/commonui/content/build.gradle.kts index 99655b9ee..28904a607 100644 --- a/core/commonui/content/build.gradle.kts +++ b/core/commonui/content/build.gradle.kts @@ -1,40 +1,12 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.commonui.content" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - implementation(libs.calf) implementation(libs.koin.core) implementation(libs.ksoup.html) @@ -52,17 +24,3 @@ kotlin { } } } - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.commonui.content" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} diff --git a/core/commonui/content/src/commonMain/kotlin/com/livefast/eattrash/raccoonforfriendica/core/commonui/content/ContentExtendedSocialInfo.kt b/core/commonui/content/src/commonMain/kotlin/com/livefast/eattrash/raccoonforfriendica/core/commonui/content/ContentExtendedSocialInfo.kt index b40562eef..492ae03c1 100644 --- a/core/commonui/content/src/commonMain/kotlin/com/livefast/eattrash/raccoonforfriendica/core/commonui/content/ContentExtendedSocialInfo.kt +++ b/core/commonui/content/src/commonMain/kotlin/com/livefast/eattrash/raccoonforfriendica/core/commonui/content/ContentExtendedSocialInfo.kt @@ -6,10 +6,10 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Icon import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.FavoriteBorder import androidx.compose.material.icons.filled.Repeat +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable diff --git a/core/htmlparse/build.gradle.kts b/core/htmlparse/build.gradle.kts index 8506d58be..c77fa53d1 100644 --- a/core/htmlparse/build.gradle.kts +++ b/core/htmlparse/build.gradle.kts @@ -1,56 +1,15 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.htmlparse" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material3) - - implementation(libs.koin.core) implementation(libs.ksoup.html) implementation(libs.ksoup.entities) } } } } - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.htmlparse" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} diff --git a/core/l10n/build.gradle.kts b/core/l10n/build.gradle.kts index 98a6bec62..5d7db010f 100644 --- a/core/l10n/build.gradle.kts +++ b/core/l10n/build.gradle.kts @@ -1,82 +1,15 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.l10n" - isStatic = true - } - } - sourceSets { val commonMain by getting { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.lyricist) } } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.commonui.l10n" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/core/navigation/build.gradle.kts b/core/navigation/build.gradle.kts index 765efa21f..87b6d7529 100644 --- a/core/navigation/build.gradle.kts +++ b/core/navigation/build.gradle.kts @@ -1,42 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) - alias(libs.plugins.mokkery) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.test") } kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.navigation" - isStatic = true - } - } - sourceSets { commonMain.dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material3) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.stately.common) implementation(libs.voyager.navigator) implementation(libs.voyager.tab) @@ -45,50 +16,5 @@ kotlin { implementation(projects.domain.content.data) } - val commonTest by getting { - dependencies { - dependencies { - implementation(kotlin("test")) - implementation(libs.kotlinx.coroutines.test) - implementation(libs.turbine) - } - } - } - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.navigation" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/core/notifications/build.gradle.kts b/core/notifications/build.gradle.kts index 6040d581c..252f6e706 100644 --- a/core/notifications/build.gradle.kts +++ b/core/notifications/build.gradle.kts @@ -1,89 +1,17 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.test") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.notifications" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - - implementation(libs.koin.core) - api(libs.koin.annotations) - implementation(projects.core.utils) implementation(projects.domain.content.data) } } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - implementation(libs.kotlinx.coroutines.test) - implementation(libs.turbine) - } - } - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.notifications" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/core/persistence/build.gradle.kts b/core/persistence/build.gradle.kts index a8a07ea5d..69647d46f 100644 --- a/core/persistence/build.gradle.kts +++ b/core/persistence/build.gradle.kts @@ -1,44 +1,14 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.koinWithKsp") alias(libs.plugins.room) } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.persistence" - isStatic = true - linkerOpts.add("-lsqlite3") - } - } - - compilerOptions { - freeCompilerArgs.add("-Xexpect-actual-classes") - } - sourceSets { val commonMain by getting { dependencies { implementation(libs.kotlinx.coroutines) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.room.sqlite) implementation(libs.room.runtime) @@ -53,18 +23,8 @@ kotlin { } } -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.persistence" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } +customKotlinMultiplatformExtension { + additionalLinkerOptionForIos = "-lsqlite3" } room { @@ -76,23 +36,4 @@ dependencies { add("kspIosX64", libs.room.ksp) add("kspIosArm64", libs.room.ksp) add("kspIosSimulatorArm64", libs.room.ksp) - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -kotlin.sourceSets.commonMain { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } } diff --git a/core/preferences/build.gradle.kts b/core/preferences/build.gradle.kts index 2c7d63a97..a7553e1c1 100644 --- a/core/preferences/build.gradle.kts +++ b/core/preferences/build.gradle.kts @@ -1,37 +1,10 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.kotlinx.serialization) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) - alias(libs.plugins.mokkery) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.test") } kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.preferences" - isStatic = true - } - } - - compilerOptions { - freeCompilerArgs.add("-Xexpect-actual-classes") - } - sourceSets { val androidMain by getting { dependencies { @@ -41,53 +14,8 @@ kotlin { } val commonMain by getting { dependencies { - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.multiplatform.settings) } } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - implementation(libs.kotlinx.coroutines.test) - implementation(libs.turbine) - } - } - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.preferences" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/core/resources/build.gradle.kts b/core/resources/build.gradle.kts index c318dabec..cc4ecc257 100644 --- a/core/resources/build.gradle.kts +++ b/core/resources/build.gradle.kts @@ -1,62 +1,15 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.resources" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.compose.multiplatform.media.player) implementation(libs.koin.core) + implementation(libs.compose.multiplatform.media.player) } } } } - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.resources" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } - sourceSets { - named("main") { - manifest.srcFile("src/androidMain/AndroidManifest.xml") - res.srcDirs("src/commonMain/resources") - } - } -} diff --git a/core/testutils/build.gradle.kts b/core/testutils/build.gradle.kts index d90b04a63..7a7f98c01 100644 --- a/core/testutils/build.gradle.kts +++ b/core/testutils/build.gradle.kts @@ -1,29 +1,8 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) + id("com.livefast.eattrash.kotlinMultiplatform") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.testutils" - isStatic = true - } - } - sourceSets { val commonMain by getting val androidMain by getting { @@ -34,17 +13,3 @@ kotlin { } } } - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.testutils" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} diff --git a/core/utils/build.gradle.kts b/core/utils/build.gradle.kts index a0c5ba103..38d8eedf4 100644 --- a/core/utils/build.gradle.kts +++ b/core/utils/build.gradle.kts @@ -1,47 +1,15 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask -import java.util.Properties - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) - alias(libs.plugins.mokkery) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.sentryDsn") + id("com.livefast.eattrash.test") } kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "core.utils" - isStatic = true - } - } - - compilerOptions { - freeCompilerArgs.add("-Xexpect-actual-classes") - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material3) - - implementation(libs.koin.core) implementation(libs.ktor.cio) implementation(libs.coil) implementation(libs.coil.network.ktor) @@ -67,60 +35,5 @@ kotlin { implementation(libs.ktor.darwin) } } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - implementation(libs.kotlinx.coroutines.test) - implementation(libs.turbine) - } - } - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.core.utils" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } - - buildTypes { - all { - val props = loadProperties("build.properties") - resValue("string", "sentry_dsn", props.getProperty("sentry_dsn")) - } - } -} - -private fun loadProperties(name: String): Properties = - File("$projectDir/$name").inputStream().use { - Properties().apply { load(it) } - } - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/core/utils/src/androidMain/kotlin/com/livefast/eattrash/raccoonforfriendica/core/utils/debug/DefaultCrashReportManager.kt b/core/utils/src/androidMain/kotlin/com/livefast/eattrash/raccoonforfriendica/core/utils/debug/DefaultCrashReportManager.kt index 7bed28362..cfc566119 100644 --- a/core/utils/src/androidMain/kotlin/com/livefast/eattrash/raccoonforfriendica/core/utils/debug/DefaultCrashReportManager.kt +++ b/core/utils/src/androidMain/kotlin/com/livefast/eattrash/raccoonforfriendica/core/utils/debug/DefaultCrashReportManager.kt @@ -1,8 +1,7 @@ package com.livefast.eattrash.raccoonforfriendica.core.utils.debug -import android.content.Context +import com.livefast.eattrash.raccoonforfriendica.SentryConfigurationValues import com.livefast.eattrash.raccoonforfriendica.core.preferences.store.TemporaryKeyStore -import com.livefast.eattrash.raccoonforfriendica.core.utils.R import io.sentry.kotlin.multiplatform.Sentry import io.sentry.kotlin.multiplatform.protocol.UserFeedback import kotlinx.coroutines.flow.MutableStateFlow @@ -12,7 +11,6 @@ import org.koin.core.annotation.Single @Single internal actual class DefaultCrashReportManager( - private val context: Context, private val keyStore: TemporaryKeyStore, ) : CrashReportManager { private val _enabled = MutableStateFlow(false) @@ -43,7 +41,7 @@ internal actual class DefaultCrashReportManager( return } Sentry.init { options -> - options.dsn = context.getString(R.string.sentry_dsn) + options.dsn = SentryConfigurationValues.DSN } Thread.currentThread().apply { val originalHandler = uncaughtExceptionHandler diff --git a/core/utils/src/iosMain/kotlin/com/livefast/eattrash/raccoonforfriendica/core/utils/debug/DefaultCrashReportManager.kt b/core/utils/src/iosMain/kotlin/com/livefast/eattrash/raccoonforfriendica/core/utils/debug/DefaultCrashReportManager.kt index 2a3e4fc7b..1c2e7aa0a 100644 --- a/core/utils/src/iosMain/kotlin/com/livefast/eattrash/raccoonforfriendica/core/utils/debug/DefaultCrashReportManager.kt +++ b/core/utils/src/iosMain/kotlin/com/livefast/eattrash/raccoonforfriendica/core/utils/debug/DefaultCrashReportManager.kt @@ -1,5 +1,6 @@ package com.livefast.eattrash.raccoonforfriendica.core.utils.debug +import com.livefast.eattrash.raccoonforfriendica.SentryConfigurationValues import com.livefast.eattrash.raccoonforfriendica.core.preferences.store.TemporaryKeyStore import io.sentry.kotlin.multiplatform.Sentry import io.sentry.kotlin.multiplatform.protocol.UserFeedback @@ -7,7 +8,6 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.update import org.koin.core.annotation.Single -import platform.Foundation.NSBundle @Single internal actual class DefaultCrashReportManager( @@ -40,9 +40,8 @@ internal actual class DefaultCrashReportManager( if (!enabled.value) { return } - val dict = NSBundle.mainBundle.infoDictionary Sentry.init { options -> - options.dsn = dict?.get("SENTRY_DSN") as? String ?: "" + options.dsn = SentryConfigurationValues.DSN } } diff --git a/domain/content/data/build.gradle.kts b/domain/content/data/build.gradle.kts index de5040221..e540ea3ee 100644 --- a/domain/content/data/build.gradle.kts +++ b/domain/content/data/build.gradle.kts @@ -1,57 +1,15 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "domain.content.data" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.material) - implementation(compose.materialIconsExtended) - implementation(libs.koin.core) - implementation(libs.ktorfit.lib) - implementation(projects.core.l10n) implementation(projects.core.utils) } } } } - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.domain.content.data" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} diff --git a/domain/content/pagination/build.gradle.kts b/domain/content/pagination/build.gradle.kts index bfdae87b9..50799e134 100644 --- a/domain/content/pagination/build.gradle.kts +++ b/domain/content/pagination/build.gradle.kts @@ -1,37 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) - alias(libs.plugins.mokkery) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.test") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "domain.content.pagination" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(libs.koin.core) implementation(libs.kotlinx.coroutines) implementation(projects.core.notifications) @@ -42,49 +18,5 @@ kotlin { implementation(projects.domain.content.repository) } } - val commonTest by getting { - dependencies { - dependencies { - implementation(kotlin("test")) - implementation(libs.kotlinx.coroutines.test) - } - } - } - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.domain.content.pagination" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/domain/content/repository/build.gradle.kts b/domain/content/repository/build.gradle.kts index 0e4b7b461..fce054b88 100644 --- a/domain/content/repository/build.gradle.kts +++ b/domain/content/repository/build.gradle.kts @@ -1,37 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) - alias(libs.plugins.mokkery) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.test") } kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "domain.content.repository" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.ktorfit.lib) implementation(libs.ktorfit.converters.response) @@ -42,47 +18,5 @@ kotlin { implementation(projects.domain.content.data) } } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - implementation(libs.kotlinx.coroutines.test) - } - } - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.domain.content.repository" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/domain/content/usecase/build.gradle.kts b/domain/content/usecase/build.gradle.kts index e38558760..600f53f5b 100644 --- a/domain/content/usecase/build.gradle.kts +++ b/domain/content/usecase/build.gradle.kts @@ -1,84 +1,18 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) - alias(libs.plugins.mokkery) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.test") } kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "domain.content.usecase" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.kotlinx.coroutines) implementation(projects.domain.content.data) implementation(projects.domain.content.repository) } } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - implementation(libs.kotlinx.coroutines.test) - } - } - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.domain.content.usecase" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/domain/identity/data/build.gradle.kts b/domain/identity/data/build.gradle.kts index 41e270b1d..621b73468 100644 --- a/domain/identity/data/build.gradle.kts +++ b/domain/identity/data/build.gradle.kts @@ -1,54 +1,15 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "domain.identity.data" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(libs.koin.core) - implementation(projects.core.appearance) implementation(projects.core.l10n) } } } } - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.domain.identity.data" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} diff --git a/domain/identity/repository/build.gradle.kts b/domain/identity/repository/build.gradle.kts index 4758a2adc..ab0f3c6a1 100644 --- a/domain/identity/repository/build.gradle.kts +++ b/domain/identity/repository/build.gradle.kts @@ -1,42 +1,14 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) - alias(libs.plugins.mokkery) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.test") } kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "domain.identity.repository" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.foundation) - implementation(compose.runtime) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.ktor.client.core) implementation(projects.core.api) @@ -49,48 +21,5 @@ kotlin { implementation(projects.domain.identity.data) } } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - implementation(libs.kotlinx.coroutines.test) - implementation(libs.turbine) - } - } - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.domain.identity.repository" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/domain/identity/usecase/build.gradle.kts b/domain/identity/usecase/build.gradle.kts index 93f05764e..5531cd3f1 100644 --- a/domain/identity/usecase/build.gradle.kts +++ b/domain/identity/usecase/build.gradle.kts @@ -1,35 +1,12 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.kotlinx.serialization) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) - alias(libs.plugins.mokkery) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.serialization") + id("com.livefast.eattrash.test") } kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "domain.identity.usecase" - isStatic = true - } - } - sourceSets { val androidMain by getting { dependencies { @@ -38,10 +15,6 @@ kotlin { } val commonMain by getting { dependencies { - implementation(compose.runtime) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.kotlinx.coroutines) implementation(libs.kotlinx.serialization.json) @@ -60,48 +33,5 @@ kotlin { implementation(projects.domain.pushnotifications) } } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - implementation(libs.kotlinx.coroutines.test) - implementation(libs.turbine) - } - } - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.domain.identity.usecase" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/domain/pullnotifications/build.gradle.kts b/domain/pullnotifications/build.gradle.kts index fa407267b..6c820f6c9 100644 --- a/domain/pullnotifications/build.gradle.kts +++ b/domain/pullnotifications/build.gradle.kts @@ -1,36 +1,9 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "domain.pullnotifications" - isStatic = true - } - } - - compilerOptions { - freeCompilerArgs.add("-Xexpect-actual-classes") - } - sourceSets { val androidMain by getting { dependencies { @@ -39,12 +12,6 @@ kotlin { } val commonMain by getting { dependencies { - implementation(compose.foundation) - implementation(compose.runtime) - - implementation(libs.koin.core) - api(libs.koin.annotations) - implementation(projects.core.appearance) implementation(projects.core.l10n) implementation(projects.core.navigation) @@ -60,39 +27,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.domain.pullnotifications" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/domain/pullnotifications/src/androidMain/kotlin/com/livefast/eattrash/raccoonforfriendica/domain/pullnotifications/CheckNotificationWorker.kt b/domain/pullnotifications/src/androidMain/kotlin/com/livefast/eattrash/raccoonforfriendica/domain/pullnotifications/CheckNotificationWorker.kt index 65ab05c48..f55d11a82 100644 --- a/domain/pullnotifications/src/androidMain/kotlin/com/livefast/eattrash/raccoonforfriendica/domain/pullnotifications/CheckNotificationWorker.kt +++ b/domain/pullnotifications/src/androidMain/kotlin/com/livefast/eattrash/raccoonforfriendica/domain/pullnotifications/CheckNotificationWorker.kt @@ -14,7 +14,6 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.koin.java.KoinJavaComponent.inject import java.util.Collections.max -import com.livefast.eattrash.raccoonforfriendica.core.resources.R as resourcesR internal class CheckNotificationWorker( private val context: Context, @@ -31,7 +30,7 @@ internal class CheckNotificationWorker( Notification .Builder(context, NotificationConstants.CHANNEL_ID) .setContentTitle("RaccoonForFriendica") - .setSmallIcon(resourcesR.drawable.ic_monochrome) + .setSmallIcon(R.drawable.ic_monochrome) .setContentIntent(getPendingIntent()) .build(), ) @@ -53,7 +52,7 @@ internal class CheckNotificationWorker( .Builder(context, NotificationConstants.CHANNEL_ID) .setContentTitle(messages.unreadNotificationTitle) .setContentText(messages.unreadNotificationBody(count)) - .setSmallIcon(resourcesR.drawable.ic_monochrome) + .setSmallIcon(R.drawable.ic_monochrome) .setContentIntent(getPendingIntent()) .setNumber(count) .build() diff --git a/core/resources/src/androidMain/res/drawable/ic_monochrome.xml b/domain/pullnotifications/src/androidMain/res/drawable/ic_monochrome.xml similarity index 100% rename from core/resources/src/androidMain/res/drawable/ic_monochrome.xml rename to domain/pullnotifications/src/androidMain/res/drawable/ic_monochrome.xml diff --git a/domain/pushnotifications/build.gradle.kts b/domain/pushnotifications/build.gradle.kts index 65f313394..9c6895a8d 100644 --- a/domain/pushnotifications/build.gradle.kts +++ b/domain/pushnotifications/build.gradle.kts @@ -1,38 +1,11 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) - alias(libs.plugins.mokkery) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.test") } kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "domain.pushnotifications" - isStatic = true - } - } - - compilerOptions { - freeCompilerArgs.add("-Xexpect-actual-classes") - } - sourceSets { val androidMain by getting { dependencies { @@ -42,10 +15,6 @@ kotlin { } val commonMain by getting { dependencies { - implementation(compose.runtime) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.ktor.client.core) implementation(projects.core.api) @@ -62,47 +31,5 @@ kotlin { implementation(projects.domain.pullnotifications) } } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - implementation(libs.kotlinx.coroutines.test) - } - } - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.domain.pushnotifications" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/domain/urlhandler/build.gradle.kts b/domain/urlhandler/build.gradle.kts index da27afc02..375c2e764 100644 --- a/domain/urlhandler/build.gradle.kts +++ b/domain/urlhandler/build.gradle.kts @@ -1,45 +1,14 @@ -import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) - alias(libs.plugins.mokkery) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.test") } -@OptIn(ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "domain.urlhandler" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.foundation) - implementation(compose.runtime) - - implementation(libs.koin.core) - api(libs.koin.annotations) - implementation(projects.core.appearance) implementation(projects.core.l10n) implementation(projects.core.navigation) @@ -53,48 +22,5 @@ kotlin { implementation(projects.domain.identity.repository) } } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - implementation(libs.kotlinx.coroutines.test) - implementation(libs.turbine) - } - } - } -} - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.domain.urlhandler" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/feature/announcements/build.gradle.kts b/feature/announcements/build.gradle.kts index 7313bd5e7..5bb45729f 100644 --- a/feature/announcements/build.gradle.kts +++ b/feature/announcements/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.announcements" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -59,39 +28,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.announcements" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/calendar/build.gradle.kts b/feature/calendar/build.gradle.kts index ae952af53..a04f5acee 100644 --- a/feature/calendar/build.gradle.kts +++ b/feature/calendar/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.calendar" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -60,39 +29,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.calendar" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/circles/build.gradle.kts b/feature/circles/build.gradle.kts index a846042c4..89a307c6c 100644 --- a/feature/circles/build.gradle.kts +++ b/feature/circles/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.circles" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -62,39 +31,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.circles" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/composer/build.gradle.kts b/feature/composer/build.gradle.kts index e1493f0c3..fd491e992 100644 --- a/feature/composer/build.gradle.kts +++ b/feature/composer/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.composer" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -63,39 +32,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.composer" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/directmessages/build.gradle.kts b/feature/directmessages/build.gradle.kts index 2c52787a6..f832c4a98 100644 --- a/feature/directmessages/build.gradle.kts +++ b/feature/directmessages/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.directmessages" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -61,39 +30,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.directmessages" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/drawer/build.gradle.kts b/feature/drawer/build.gradle.kts index 16ec3fceb..26890daca 100644 --- a/feature/drawer/build.gradle.kts +++ b/feature/drawer/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.drawer" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -60,39 +29,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.drawer" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/entrydetail/build.gradle.kts b/feature/entrydetail/build.gradle.kts index 3863aadf6..b0a2c6924 100644 --- a/feature/entrydetail/build.gradle.kts +++ b/feature/entrydetail/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.entrydetail" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -60,39 +29,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.entrydetail" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/explore/build.gradle.kts b/feature/explore/build.gradle.kts index efbe843f3..89a307c6c 100644 --- a/feature/explore/build.gradle.kts +++ b/feature/explore/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.explore" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -62,39 +31,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.explore" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/favorites/build.gradle.kts b/feature/favorites/build.gradle.kts index b348c5781..89a307c6c 100644 --- a/feature/favorites/build.gradle.kts +++ b/feature/favorites/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.favorites" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -62,39 +31,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.favorites" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/followrequests/build.gradle.kts b/feature/followrequests/build.gradle.kts index 9010dd760..e67d14e33 100644 --- a/feature/followrequests/build.gradle.kts +++ b/feature/followrequests/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.followrequests" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -61,39 +30,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.followrequests" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/gallery/build.gradle.kts b/feature/gallery/build.gradle.kts index 5999eda9d..f832c4a98 100644 --- a/feature/gallery/build.gradle.kts +++ b/feature/gallery/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.gallery" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -61,39 +30,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.gallery" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/hashtag/build.gradle.kts b/feature/hashtag/build.gradle.kts index 468979d16..89a307c6c 100644 --- a/feature/hashtag/build.gradle.kts +++ b/feature/hashtag/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.hashtag" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -62,39 +31,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.hashtag" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/imagedetail/build.gradle.kts b/feature/imagedetail/build.gradle.kts index 23b66c689..518513491 100644 --- a/feature/imagedetail/build.gradle.kts +++ b/feature/imagedetail/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.imagedetail" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -52,39 +21,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.imagedetail" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/inbox/build.gradle.kts b/feature/inbox/build.gradle.kts index eaf001957..be38f3835 100644 --- a/feature/inbox/build.gradle.kts +++ b/feature/inbox/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.inbox" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -62,39 +31,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.inbox" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/licences/build.gradle.kts b/feature/licences/build.gradle.kts index eeae468d0..6da542fc2 100644 --- a/feature/licences/build.gradle.kts +++ b/feature/licences/build.gradle.kts @@ -1,43 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.licences" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -56,39 +26,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.licences" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/login/build.gradle.kts b/feature/login/build.gradle.kts index 5a903f750..6ac3bda69 100644 --- a/feature/login/build.gradle.kts +++ b/feature/login/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.login" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -57,39 +26,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.login" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/manageblocks/build.gradle.kts b/feature/manageblocks/build.gradle.kts index c55d508b7..a04f5acee 100644 --- a/feature/manageblocks/build.gradle.kts +++ b/feature/manageblocks/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.manageblocks" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -60,39 +29,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.manageblocks" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/nodeinfo/build.gradle.kts b/feature/nodeinfo/build.gradle.kts index 868a1996f..eecb37553 100644 --- a/feature/nodeinfo/build.gradle.kts +++ b/feature/nodeinfo/build.gradle.kts @@ -1,48 +1,15 @@ -import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetTree -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.ksp) - alias(libs.plugins.mokkery) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") + id("com.livefast.eattrash.test") + id("com.livefast.eattrash.uiTest") } -@OptIn(ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.nodeinfo" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) implementation(libs.lyricist) @@ -61,69 +28,5 @@ kotlin { implementation(projects.domain.identity.repository) } } - val commonTest by getting { - dependencies { - dependencies { - implementation(kotlin("test")) - implementation(libs.kotlinx.coroutines.test) - implementation(libs.turbine) - implementation(projects.core.testutils) - } - } - } - val androidUnitTest by getting { - dependencies { - @OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class) - implementation(compose.uiTest) - implementation(libs.compose.ui.test) - implementation(libs.robolectric) - implementation(projects.core.testutils) - } - } - } - - androidTarget { - @OptIn(ExperimentalKotlinGradlePluginApi::class) - instrumentedTestVariant.sourceSetTree.set(KotlinSourceSetTree.test) - } -} - -dependencies { - debugImplementation(libs.compose.ui.test.manifest) - - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.nodeinfo" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - testOptions.unitTests.isIncludeAndroidResources = true - testInstrumentationRunner = "org.robolectric.RobolectricTestRunner" - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") } } diff --git a/feature/profile/build.gradle.kts b/feature/profile/build.gradle.kts index 0782faa6f..19e56dc02 100644 --- a/feature/profile/build.gradle.kts +++ b/feature/profile/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.profile" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.screenmodel) implementation(libs.voyager.tab) implementation(libs.voyager.koin) @@ -63,39 +32,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.profile" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/report/build.gradle.kts b/feature/report/build.gradle.kts index 1c150ea43..3975ec92c 100644 --- a/feature/report/build.gradle.kts +++ b/feature/report/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.report" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -58,39 +27,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.report" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/search/build.gradle.kts b/feature/search/build.gradle.kts index 31354a020..89a307c6c 100644 --- a/feature/search/build.gradle.kts +++ b/feature/search/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.search" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -62,39 +31,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.search" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/settings/build.gradle.kts b/feature/settings/build.gradle.kts index c98296125..faa8a7538 100644 --- a/feature/settings/build.gradle.kts +++ b/feature/settings/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.settings" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) implementation(libs.lyricist) @@ -63,39 +32,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.settings" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/thread/build.gradle.kts b/feature/thread/build.gradle.kts index 19d0e5941..b0a2c6924 100644 --- a/feature/thread/build.gradle.kts +++ b/feature/thread/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.thread" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -60,39 +29,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.thread" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/timeline/build.gradle.kts b/feature/timeline/build.gradle.kts index e859f1427..89a307c6c 100644 --- a/feature/timeline/build.gradle.kts +++ b/feature/timeline/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.timeline" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -62,39 +31,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.timeline" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/unpublished/build.gradle.kts b/feature/unpublished/build.gradle.kts index 36b1cec9e..f832c4a98 100644 --- a/feature/unpublished/build.gradle.kts +++ b/feature/unpublished/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.unpublished" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.navigator) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -61,39 +30,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.unpublished" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/userdetail/build.gradle.kts b/feature/userdetail/build.gradle.kts index 10cd5ca1f..b26c32f81 100644 --- a/feature/userdetail/build.gradle.kts +++ b/feature/userdetail/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.userdetail" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -61,39 +30,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.userdetail" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/feature/userlist/build.gradle.kts b/feature/userlist/build.gradle.kts index f99a3e8de..41554b82d 100644 --- a/feature/userlist/build.gradle.kts +++ b/feature/userlist/build.gradle.kts @@ -1,44 +1,13 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) - alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) + id("com.livefast.eattrash.kotlinMultiplatform") + id("com.livefast.eattrash.composeMultiplatform") + id("com.livefast.eattrash.koinWithKsp") } -@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } - } - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64(), - ).forEach { - it.binaries.framework { - baseName = "feature.userlist" - isStatic = true - } - } - sourceSets { val commonMain by getting { dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.materialIconsExtended) - - implementation(libs.koin.core) - api(libs.koin.annotations) implementation(libs.voyager.screenmodel) implementation(libs.voyager.koin) @@ -61,39 +30,3 @@ kotlin { } } } - -dependencies { - add("kspCommonMainMetadata", libs.koin.ksp) - add("kspAndroid", libs.koin.ksp) - add("kspIosX64", libs.koin.ksp) - add("kspIosArm64", libs.koin.ksp) - add("kspIosSimulatorArm64", libs.koin.ksp) -} - -ksp { - arg("KOIN_DEFAULT_MODULE", "false") -} - -android { - namespace = "com.livefast.eattrash.raccoonforfriendica.feature.userlist" - compileSdk = - libs.versions.android.compileSdk - .get() - .toInt() - defaultConfig { - minSdk = - libs.versions.android.minSdk - .get() - .toInt() - } -} - -kotlin.sourceSets.commonMain.configure { - kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") -} - -tasks.withType(KotlinCompilationTask::class.java).configureEach { - if (name != "kspCommonMainKotlinMetadata") { - dependsOn("kspCommonMainKotlinMetadata") - } -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e83db9385..f9a6f64c9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,9 +18,11 @@ compose-plugin = "1.7.1" compose-ui-test = "1.7.5" connectivity = "1.2.0" compose-multiplatform-media-player = "1.0.26" +gradle = "8.7.3" koin = "4.0.0" koin-annotations = "2.0.0-Beta2" kotlin = "2.1.0" +kotlinpoet = "2.0.0" kotlinx-coroutines = "1.9.0" kotlinx-serialization-json = "1.7.3" kover = "0.9.0-RC" @@ -61,18 +63,22 @@ coil-gif = { module = "io.coil-kt.coil3:coil-gif", version.ref = "coil" } compose-colorpicker = { module = "com.github.skydoves:colorpicker-compose", version.ref = "compose-colorpicker" } compose-multiplatform-media-player = { module = "network.chaintech:compose-multiplatform-media-player", version.ref = "compose-multiplatform-media-player" } - +compose-gradlePlugin = { module = "org.jetbrains.compose:org.jetbrains.compose.gradle.plugin", version.ref = "compose-plugin" } compose-ui-test = { module = "androidx.compose.ui:ui-test-junit4-android", version.ref = "compose-ui-test" } compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "compose-ui-test" } connectivity-core = { module = "dev.jordond.connectivity:connectivity-core", version.ref = "connectivity" } connectivity-device = { module = "dev.jordond.connectivity:connectivity-device", version.ref = "connectivity" } +gradle = { module = "com.android.tools.build:gradle", version.ref = "gradle" } + koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" } koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin" } koin-annotations = { module = "io.insert-koin:koin-annotations", version.ref = "koin-annotations" } koin-ksp = { module = "io.insert-koin:koin-ksp-compiler", version.ref = "koin-annotations" } +kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +kotlinpoet = { module = "com.squareup:kotlinpoet", version.ref = "kotlinpoet" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization-json" } kotlinx-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" } @@ -93,6 +99,8 @@ ktorfit-ksp = { module = "de.jensklingenberg.ktorfit:ktorfit-ksp", version.ref = ktorfit-lib = { module = "de.jensklingenberg.ktorfit:ktorfit-lib", version.ref = "ktorfit" } ktorfit-converters-response = { module = "de.jensklingenberg.ktorfit:ktorfit-converters-response", version.ref = "ktorfit" } +ksp-gradlePlugin = { module = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" } + lyricist = { module = "cafe.adriel.lyricist:lyricist", version.ref = "lyricist" } materialKolor = { module = "com.materialkolor:material-kolor", version.ref = "materialKolor" } @@ -123,8 +131,8 @@ voyager-koin = { module = "cafe.adriel.voyager:voyager-koin", version.ref = "voy android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } -jetbrains-compose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +jetbrains-compose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } diff --git a/settings.gradle.kts b/settings.gradle.kts index e89780b8d..185fb1c5e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -13,6 +13,7 @@ pluginManagement { mavenCentral() gradlePluginPortal() } + includeBuild("build-logic") } dependencyResolutionManagement {