All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tech.skot.tools.gradle.PluginViewContract.kt Maven / Gradle / Ivy

package tech.skot.tools.gradle

import com.android.build.gradle.LibraryExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.findByType
import org.gradle.kotlin.dsl.get
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import tech.skot.Versions
import tech.skot.tools.gradle.SKLibrary.Companion.addDependenciesToLibraries

//open class SKPluginViewContractExtension {
//}

class PluginViewContract : Plugin {

    override fun apply(project: Project) {


//        val extension = project.extensions.create("skot")
        project.plugins.apply("com.android.library")
        project.plugins.apply("maven-publish")
        project.plugins.apply("kotlinx-serialization")

        project.extensions.findByType(LibraryExtension::class)?.conf(project)

        project.extensions.findByType(KotlinMultiplatformExtension::class)?.conf(project)


    }


    private fun LibraryExtension.conf(project:Project) {

        androidBaseConfig(project)

        sourceSets {
            getByName("main").kotlin.srcDirs("generated/androidMain/kotlin")
            getByName("main").kotlin.srcDirs("src/androidMain/kotlin")
            getByName("main").manifest.srcFile("src/androidMain/AndroidManifest.xml")
            getByName("main").res.srcDir("src/androidMain/res")
        }



    }

    private fun KotlinMultiplatformExtension.conf(project: Project) {
        jvm("jvm")
        android("android")
        if (project.hasIosApp()) {
            ios {
                binaries {
                    framework {
                        baseName = "viewcontract"
                    }
                }
            }
        }


        sourceSets["commonMain"].kotlin.srcDir("generated/commonMain/kotlin")
        sourceSets["commonMain"].dependencies {
            api("${Versions.group}:viewcontract:${Versions.skot}")

            //utilisé souvent par les projets et inclu à core de toutes façons
            implementation("org.jetbrains.kotlinx:kotlinx-datetime:${Versions.kotlinxDateTime}")
        }

        println("Adding dependencies to libraries ")
        addDependenciesToLibraries(
            this,
            (project.parent?.projectDir ?: project.rootDir).toPath(),
                "commonMain",
            "viewcontract"
        )

        sourceSets["androidMain"].kotlin.srcDir("src/androidMain/kotlin")


        skVariantsCombinaison(project.rootProject.rootDir.toPath()).forEach {
            sourceSets["commonMain"].kotlin.srcDir("src/commonMain/kotlin$it")
            sourceSets["androidMain"].kotlin.srcDir("src/androidMain/kotlin$it")
            sourceSets["commonMain"].kotlin.srcDir("generated$it/commonMain/kotlin")
            sourceSets["androidMain"].kotlin.srcDir("generated$it/androidMain/kotlin")
        }

    }

}







© 2015 - 2025 Weber Informatics LLC | Privacy Policy