import org.springframework.boot.gradle.plugin.SpringBootPlugin

plugins {
    id 'org.springframework.boot' apply false
    id 'java-platform'
    id 'halo.publish'
}

group = 'run.halo.tools.platform'
description = 'Platform of application.'

ext {
    commonsLang3 = "3.12.0"
    base62 = "0.1.3"
    pf4j = '3.13.0'
    javaDiffUtils = "4.12"
    guava = "33.3.1-jre"
    jsoup = '1.18.1'
    jsonPatch = "1.13"
    springDocOpenAPI = "2.8.3"
    lucene = "9.12.0"
    resilience4jVersion = "2.2.0"
    twoFactorAuth = "1.3"
    tika = "2.9.2"
    imgscalr = '4.2'
    exifExtractor = '2.19.0'
}

javaPlatform {
    allowDependencies()
}

dependencies {
    api platform(SpringBootPlugin.BOM_COORDINATES)

    constraints {
        api "org.springdoc:springdoc-openapi-starter-webflux-ui:$springDocOpenAPI"
        api 'org.openapi4j:openapi-schema-validator:1.0.7'

        // Apache Lucene
        api "org.apache.lucene:lucene-core:$lucene"
        api "org.apache.lucene:lucene-queryparser:$lucene"
        api "org.apache.lucene:lucene-highlighter:$lucene"
        api "org.apache.lucene:lucene-backward-codecs:$lucene"
        api "org.apache.lucene:lucene-analysis-common:$lucene"

        api "org.apache.commons:commons-lang3:$commonsLang3"
        api "io.seruco.encoding:base62:$base62"
        api "org.pf4j:pf4j:$pf4j"
        api "com.google.guava:guava:$guava"
        api "org.jsoup:jsoup:$jsoup"
        api "io.github.java-diff-utils:java-diff-utils:$javaDiffUtils"
        api "org.springframework.integration:spring-integration-core"
        api "com.github.java-json-tools:json-patch:$jsonPatch"
        api "org.thymeleaf.extras:thymeleaf-extras-springsecurity6"
        api "io.github.resilience4j:resilience4j-spring-boot3:$resilience4jVersion"
        api "io.github.resilience4j:resilience4j-reactor:$resilience4jVersion"
        api "com.j256.two-factor-auth:two-factor-auth:$twoFactorAuth"
        api "org.apache.tika:tika-core:$tika"
        api "org.imgscalr:imgscalr-lib:$imgscalr"
        api "com.drewnoakes:metadata-extractor:$exifExtractor"
    }

}

publishing {
    publications.named('mavenJava', MavenPublication) {
        from components.javaPlatform
        pom {
            name = 'Application platform.'
            description = "$project.description"
        }
    }
}
