import org.gradle.internal.os.OperatingSystem
import org.gradle.plugins.ide.idea.model.IdeaLanguageLevel

plugins {
    id 'java'
    id 'java-library'
    id 'com.fr.common' version '1.0-SNAPSHOT'
}

// 模块参数
ext {
    frVersion = ""
    cbbVersion = ""
    outputPath = "build"
    ignoreTestFailureSetting = true
    languageLevelSetting = 1.8
    jxBrowserVersion = '7.26'
}

applyGlobalConfigPathIfExist()

if (versions.frVersion) {
    frVersion = versions.frVersion
}
def frDevVersion = "DEV" + frVersion

dependencies {
    api project(':designer-base')
    api project(':designer-chart')
    api project(':designer-form')
    api project(':designer-realize')
}

allprojects {
    apply plugin: 'java'
    apply plugin: 'java-library'
    apply plugin: 'idea'

    group 'com.fr.design'
    version frDevVersion
    sourceCompatibility = languageLevelSetting
    targetCompatibility = languageLevelSetting

    tasks.withType(JavaCompile).configureEach {
        options.encoding = "UTF-8"
        options.compilerArgs << "-parameters"
    }

    repositories {
        mavenLocal()
        maven {
            url 'https://maven.ej-technologies.com/repository'
        }
    }

    idea {
        module {
            inheritOutputDirs = false
            outputDir = file(outputPath + "/classes")
            testOutputDir = file(outputPath + "/test-classes")
            languageLevel = new IdeaLanguageLevel(sourceCompatibility)
            targetBytecodeVersion = targetCompatibility
        }
    }

    dependencies {
        implementation 'com.fr.webui:fine-webui:' + frVersion
        //认证单点依赖
        implementation "org.jasig.cas.client:cas-client-core:3.6.4"
        implementation "cas:casclient:2.0.11"
        // 认证前端依赖
        implementation 'com.fr.cbb:fine-cbb-common:' + cbbVersion
        // 门户
        implementation 'com.fr.portal:fine-portal:' + apiVersion
        implementation 'com.fr.portal:fine-portal-api:' + apiVersion
        // cbb
        implementation 'com.fr.essential:fine-essential:' + cbbVersion
        implementation 'com.fr.cbb:fine-cbb-common:' + cbbVersion
        implementation 'com.fr.cbb:fine-cbb-extend:' + cbbVersion
        // plugin
        implementation 'com.fr.plugin:fine-plugin-api:' + apiVersion
        implementation 'com.fr.plugin:fine-plugin:' + apiVersion
        // 远程设计
        implementation 'com.fr.workplace:workplace:' + apiVersion
        implementation 'com.fr.workplace:workplace-api:' + apiVersion
        // 底座
        implementation 'com.fr.carina:fine-carina:' + apiVersion
        // auth
        implementation 'com.fr.ac:fine-ac-api:' + apiVersion
        implementation 'com.fr.auth:fine-auth:' + apiVersion
        implementation 'com.fr.auth:fine-auth-api:' + apiVersion
        // lic
        implementation 'com.fr.license:fine-license:' + apiVersion
        implementation 'com.fr.license:fine-license-api:' + apiVersion
        // messenger
        implementation 'com.fr.messenger:fine-messenger:' + carinaVersion
        implementation 'com.install4j:install4j-runtime:8.0.4'
        implementation "com.fr.third:jxbrowser-v7:${jxBrowserVersion}"
        implementation "com.fr.third:jxbrowser-swing-v7:${jxBrowserVersion}"
        implementation 'com.fr.third.server:servlet-api:3.0'
        implementation 'org.swingexplorer:swexpl:2.0.1'
        implementation 'org.swingexplorer:swag:1.0'
        implementation 'net.java.dev.jna:jna:5.4.0'
        implementation 'org.apache.tomcat:tomcat-catalina:8.5.93'
        implementation 'org.apache.tomcat:tomcat-websocket:8.5.93'
        implementation 'io.socket:socket.io-client:0.7.0'
        implementation('com.fr.third:fine-third:' + frVersion) { exclude group: "com.fr.cbb", module: "fine-cbb" }
        implementation 'com.fr.core:fine-core:' + frDevVersion
        implementation 'com.fr.datasource:fine-datasource-api:' + fdlVersion
        implementation 'com.fr.datasource:fine-datasource-core:' + fdlVersion
        implementation 'com.fr.datasource:fine-datasource-web:' + fdlVersion
        implementation 'com.fr.decision:decision-i18n:' + frVersion
        implementation 'com.fr.report:engine-report:' + frDevVersion
        implementation 'com.fr.report:engine-x:' + frDevVersion
        implementation 'com.fr.report:engine-chart:' + frDevVersion
        implementation 'com.fr.report:engine-i18n:' + frDevVersion
        implementation 'com.fr.design:design-i18n:' + frDevVersion
        implementation 'com.github.weisj:jsvg:1.2.0'
        implementation 'com.formdev:flatlaf:3.4'
        implementation 'com.formdev:flatlaf-extras:3.4'
        implementation 'com.fine.swing.ui:layout:1.0-SNAPSHOT'
        implementation 'com.fanruan.vito:gui-inspector:1.0.2'
        testImplementation 'org.easymock:easymock:3.5.1'
        testImplementation 'org.powermock:powermock-module-junit4:1.7.1'
        testImplementation 'org.powermock:powermock-api-easymock:1.7.1'
        testImplementation 'org.powermock:powermock-api-mockito2:1.7.4'
        testImplementation 'junit:junit:4.12'
    }

    // 目前开发工程适配 mac_x64, mac_aarch64, windows_x64
    if (OperatingSystem.current().isMacOsX() && "aarch64".equals(System.getProperty("os.arch"))) {
        dependencies {
            implementation "com.fr.third:jxbrowser-mac-arm-v7:${jxBrowserVersion}"
        }
    } else if (OperatingSystem.current().isMacOsX()) {
        dependencies {
            implementation "com.fr.third:jxbrowser-mac-v7:${jxBrowserVersion}"
        }
    } else if (OperatingSystem.current().isWindows()) {
        dependencies {
            implementation "com.fr.third:jxbrowser-win64-v7:${jxBrowserVersion}"
        }
    }
}