/*
 * Copyright 2019-2021 Mamoe Technologies and contributors.
 *
 *  此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
 *  Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
 *
 *  https://github.com/mamoe/mirai/blob/master/LICENSE
 */

pluginManagement {
    repositories {
        mavenLocal()
        gradlePluginPortal()
        mavenCentral()
        jcenter()
        google()
        maven(url = "https://dl.bintray.com/kotlin/kotlin-eap")
        maven(url = "https://dl.bintray.com/kotlin/kotlin-dev")
        maven(url = "https://dl.bintray.com/jetbrains/kotlin-native-dependencies")
        maven(url = "https://kotlin.bintray.com/kotlinx")
    }
}

rootProject.name = "mirai"

include(":mirai-core-utils")
include(":mirai-core-api")
include(":mirai-core")
include(":mirai-core-all")

include(":binary-compatibility-validator")


fun includeConsoleProjects() {
    val disableOldFrontEnds = true

    fun includeConsoleProject(projectPath: String, path: String? = null) {
        include(projectPath)
        if (path != null) project(projectPath).projectDir = file("mirai-console/$path")
    }

    includeConsoleProject(":mirai-console-compiler-annotations", "tools/compiler-annotations")
    includeConsoleProject(":mirai-console", "backend/mirai-console")
    includeConsoleProject(":mirai-console.codegen", "backend/codegen")
    includeConsoleProject(":mirai-console-terminal", "frontend/mirai-console-terminal")
    includeConsoleProject(":mirai-console-compiler-common", "tools/compiler-common")
    includeConsoleProject(":mirai-console-intellij", "tools/intellij-plugin")
    includeConsoleProject(":mirai-console-gradle", "tools/gradle-plugin")

    @Suppress("ConstantConditionIf")
    if (!disableOldFrontEnds) {
        includeConsoleProject(":mirai-console-terminal", "frontend/mirai-console-terminal")

        val jdkVersion = kotlin.runCatching {
            System.getProperty("java.version").let { v ->
                v.toIntOrNull() ?: v.removePrefix("1.").substringBefore("-").toIntOrNull()
            }
        }.getOrNull() ?: -1

        println("JDK version: $jdkVersion")

        if (jdkVersion >= 9) {
            includeConsoleProject(":mirai-console-graphical", "frontend/mirai-console-graphical")
        } else {
            println("当前使用的 JDK 版本为 ${System.getProperty("java.version")},  请使用 JDK 9 以上版本引入模块 `:mirai-console-graphical`\n")
        }
    }
}

fun isMiraiConsoleCloned(): Boolean {
    return file("mirai-console/build.gradle.kts").exists()
}

if (isMiraiConsoleCloned()) {
    includeConsoleProjects()
} else {
    logger.warn(
        """
            [mirai] mirai-console submodule is not configured. 
            Please execute `git submodule init` and `git submodule update --remote` to include mirai-console build if you want.
            If you develop only on mirai-core, it's not compulsory to include mirai-console.
        """.trimIndent()
    )
}