/*
 * Copyright 2021 DataCanvas
 *
 * 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-conventions'
    id 'java-library'
}

def gitVersion() {
    def proc = "git describe --tag --long --dirty=M --always"
    def gitversion = proc.execute().text.trim()
    assert !gitversion.isEmpty()
    gitversion
}

task generatePropertiesFile {
    doLast {
        def version = gitVersion()

        Properties props = new Properties()
        props.setProperty("version", version)
        File outputFile = new File("$buildDir/resources/main/versiontmp.properties")
        outputFile.getParentFile().mkdirs()
        props.store(new FileOutputStream(outputFile), null)
        // copy to source path for finding in jar or war
        copy {
             from "$buildDir/resources/main/versiontmp.properties"
             into 'src/main/resources'
         }

    }
}

processResources.dependsOn generatePropertiesFile

dependencies {

    annotationProcessor group: 'io.dingodb.expr', name: 'dingo-expr-annotations', version: 'dingo-expr'.v()
    compileOnly group: 'io.dingodb.expr', name: 'dingo-expr-annotations', version: 'dingo-expr'.v()

    api group: 'io.dingodb.expr', name: 'dingo-expr-parser', version: 'dingo-expr'.v()
    api group: 'io.dingodb.expr', name: 'dingo-expr-rel', version: 'dingo-expr'.v()
    api project(':dingo-cluster-api')
    api project(':dingo-codec-api')
    api project(':dingo-meta-api')
    api project(':dingo-net-api')
    api project(':dingo-store-api')
    api project(':dingo-tool-api')
    api project(':dingo-tso-api')
    api project(':dingo-verify')

    implementation project(':dingo-partition-api')
    implementation project(':dingo-transaction-api')
    implementation group: 'io.dingodb.expr', name: 'dingo-expr-coding', version: 'dingo-expr'.v()
    implementation group: 'io.dingodb.expr', name: 'dingo-expr-common', version: 'dingo-expr'.v()
    implementation group: 'io.dingodb.expr', name: 'dingo-expr-json', version: 'dingo-expr'.v()
    implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: 'jackson'.v()
    implementation group: 'org.apache.avro', name: 'avro', version: 'avro'.v()
    implementation group: 'com.google.guava', name: 'guava', version: 'guava'.v()
    implementation group: 'io.dropwizard.metrics', name: 'metrics-core', version: 'metrics-core'.v()

    testImplementation group: 'org.mockito', name: 'mockito-core', version: 'mockito'.v()
    testImplementation project(':dingo-test:dingo-meta-local')

}
