/**
 * Copyright (c) 2024, WSO2 LLC. (https://www.wso2.com).
 *
 * WSO2 LLC. licenses this file to you under the Apache License,
 * Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

plugins {
    id 'java'
    id 'checkstyle'
    id 'com.github.spotbugs'
}

description = 'Ballerina - Data.Json Java Utils'

dependencies {
    implementation 'junit:junit:4.13.1'
    checkstyle project(':checkstyle')
    checkstyle "com.puppycrawl.tools:checkstyle:${checkstyleToolVersion}"
    implementation 'org.apache.commons:commons-lang3:3.6'

    implementation group: 'org.ballerinalang', name: 'ballerina-lang', version: "${ballerinaLangVersion}"
    implementation group: 'org.ballerinalang', name: 'ballerina-runtime', version: "${ballerinaLangVersion}"
    implementation group: 'org.ballerinalang', name: 'value', version: "${ballerinaLangVersion}"
    implementation group: 'com.jayway.jsonpath', name: 'json-path', version: "${javaJsonPathVersion}"

    implementation group: 'io.ballerina.stdlib', name: 'constraint-native', version: "${stdlibConstraintVersion}"
}

checkstyle {
    toolVersion "${checkstyleToolVersion}"
    configFile rootProject.file("build-config/checkstyle/build/checkstyle.xml")
    configProperties = ["suppressionFile" : file("${rootDir}/build-config/checkstyle/build/suppressions.xml")]
}

checkstyleMain.dependsOn(":checkstyle:downloadCheckstyleRuleFiles")

def excludePattern = '**/module-info.java'
tasks.withType(Checkstyle) {
    exclude excludePattern
}

spotbugsMain {
    enabled=false
    def classLoader = plugins["com.github.spotbugs"].class.classLoader
    def SpotBugsConfidence = classLoader.findLoadedClass("com.github.spotbugs.snom.Confidence")
    def SpotBugsEffort = classLoader.findLoadedClass("com.github.spotbugs.snom.Effort")
    effort = SpotBugsEffort.MAX
    reportLevel = SpotBugsConfidence.LOW
    reportsDir = file("$project.buildDir/reports/spotbugs")
    reports {
        html.enabled true
        text.enabled = true
    }
    def excludeFile = file("${rootDir}/spotbugs-exclude.xml")
    if(excludeFile.exists()) {
        excludeFilter = excludeFile
    }
}

spotbugsTest {
    enabled = false
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId project.group
            artifactId "data.jsondata-native"
            version = project.version
            artifact jar
        }
    }

    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/ballerina-platform/module-ballerina-data.jsondata")
            credentials {
                username = System.getenv("publishUser")
                password = System.getenv("publishPAT")
            }
        }
    }
}

compileJava {
    doFirst {
        options.compilerArgs = [
                '--module-path', classpath.asPath,
        ]
        classpath = files()
    }
}
