/*
 * Copyright (c) 2022, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
 *
 * Licensed 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-library'
    id 'checkstyle'
    id 'com.github.spotbugs'
    id 'jacoco'
    id 'com.github.johnrengelman.shadow'
}

description = 'Ballerina - Observability integration test utils natives'
def packageName = "observe"

dependencies {

    shadow "com.google.code.gson:gson:${gsonVersion}"
    shadow "org.ballerinalang:ballerina-lang:${ballerinaLangVersion}"
    shadow "org.ballerinalang:annotations:${ballerinaLangVersion}"

    checkstyle project(':checkstyle')
    checkstyle "com.puppycrawl.tools:checkstyle:${checkstylePluginVersion}"

    implementation group: 'io.netty', name: 'netty-codec-http', version: "${nettyCodecVersion}"
    implementation group: 'org.ballerinalang', name: 'ballerina-lang', version: "${ballerinaLangVersion}"
    implementation group: 'org.ballerinalang', name: 'ballerina-runtime', version: "${ballerinaLangVersion}"
    implementation group: 'org.ballerinalang', name: 'metrics-extensions', version: "${ballerinaLangVersion}"
}

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

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

checkstyleMain.dependsOn(":checkstyle:downloadCheckstyleRuleFiles")

spotbugsMain {
    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('spotbugs-exclude.xml')
    if (excludeFile.exists()) {
        excludeFilter = excludeFile
    }
}

spotbugsTest {
    enabled = true
}

jar {
    dependsOn shadowJar
}

shadowJar {
    configurations = [project.configurations.runtimeClasspath]
    dependencies {
        exclude('META-INF/*.SF')
        exclude('META-INF/*.DSA')
        exclude('META-INF/*.RSA')
    }
}
