import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

buildscript {
    project.ext.supportRootFolder = project.projectDir.getParentFile()
    apply from: "repos.gradle"
    repos.addMavenRepositories(repositories)

    dependencies {
        classpath(libs.kotlinGradlePluginz)
    }

    configurations.classpath.resolutionStrategy {
        eachDependency { details ->
            if (details.requested.group == "org.jetbrains.kotlin") {
                details.useVersion libs.versions.kotlin.get()
            }
        }
    }
}

apply from: "out.gradle"
init.chooseOutDir()

ext.supportRootFolder = project.projectDir.getParentFile()
apply from: "repos.gradle"
apply plugin: "kotlin"

allprojects {
    repos.addMavenRepositories(repositories)

    tasks.withType(KotlinCompile).configureEach {
        kotlinOptions {
            jvmTarget = "11"
            freeCompilerArgs += [
                    "-Werror",
                    "-Xskip-metadata-version-check",
                    // Issue where sam conversion in gradle's kts file causes task-out-of-date
                    // Details: KT-46445 and https://github.com/gradle/gradle/issues/17052
                    "-Xsam-conversions=class"
            ]
            languageVersion = "1.5"
            apiVersion = "1.5"
        }
    }
}

dependencies {
    api(project("plugins"))
}
