/*
 * Copyright (c) 2019, 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 "com.github.spotbugs-base"
    id "com.github.johnrengelman.shadow"
    id "de.undercouch.download"
    id "net.researchgate.release"
}

allprojects {
    group = project.group
    version = project.version

    apply plugin: 'jacoco'
    apply plugin: 'maven-publish'

    repositories {
        mavenLocal()
        maven {
            url = 'https://maven.wso2.org/nexus/content/repositories/releases/'
        }

        maven {
            url = 'https://maven.wso2.org/nexus/content/groups/wso2-public/'
        }

        maven {
            url = 'https://repo.maven.apache.org/maven2'
        }

        maven {
            url = 'https://maven.pkg.github.com/ballerina-platform/*'
            credentials {
                username System.getenv("packageUser")
                password System.getenv("packagePAT")
            }
        }
    }

    ext {
        snapshotVersion= '-SNAPSHOT'
        timestampedVersionRegex = '.*-\\d{8}-\\d{6}-\\w.*\$'
    }
}

subprojects {

    configurations {
        ballerinaStdLibs
        jbalTools
    }

    dependencies {
        /* JBallerina Tools */
        jbalTools ("org.ballerinalang:jballerina-tools:${ballerinaLangVersion}") {
            transitive = false
        }

        /* Standard libraries */
        ballerinaStdLibs "io.ballerina.stdlib:io-ballerina:${stdlibIoVersion}"
        ballerinaStdLibs "io.ballerina.stdlib:observe-ballerina:${observeVersion}"
        ballerinaStdLibs "io.ballerina:observe-ballerina:${observeInternalVersion}"
    }
}

def moduleVersion = project.version.replace("-SNAPSHOT", "")

release {
    failOnPublishNeeded = false

    buildTasks = ["build"]
    failOnSnapshotDependencies = true
    versionPropertyFile = 'gradle.properties'
    tagTemplate = 'v$version'

    git {
        requireBranch = "release-${moduleVersion}"
        pushToRemote = 'origin'
    }
}

task build {
    dependsOn('log-ballerina:build')
}
