/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF 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 "com.google.protobuf" version "0.8.8"
  // Bump up version to 0.9.1 in order for generateAvro task to work with Gradle 5
  id "com.commercehub.gradle.plugin.avro-base" version "0.9.1"
}

apply plugin: 'java'

dependencies {
  compile project(":gobblin-api")
  compile project(":gobblin-modules:gobblin-codecs")
  compile project(":gobblin-utility")

  compile externalDependency.commonsCodec
  compile externalDependency.avro
  compile externalDependency.slf4j
  compile externalDependency.typesafeConfig
  compile externalDependency.findBugsAnnotations
  compile externalDependency.protobuf


  testCompile externalDependency.testng
  testCompile externalDependency.mockito
}

sourceSets {
  main {
    java {
      srcDir 'src/main/gen-proto'
      srcDir 'src/main/gen-avro'
    }
    resources {
      srcDir 'src/main/proto'
      srcDir 'src/main/avro'
    }

  }
}

/**
clean.doFirst {
  delete file("${projectDir}/src/main/gen-proto/").listFiles()
  delete file("${projectDir}/src/main/gen-avro/").listFiles()
}
**/

test {
  workingDir rootProject.rootDir
}

protobuf {
  generatedFilesBaseDir = "$projectDir/src/main/gen-proto"
  protoc {
    artifact = "com.google.protobuf:protoc:3.6.1"
  }
  plugins {
    grpc {
      artifact = "io.grpc:protoc-gen-grpc-java:1.19.0"
    }
  }
  generateProtoTasks {
    all()*.plugins {
      grpc {}
    }
  }
}

avro {
  stringType = "string"
}

task generateAvro(type: com.commercehub.gradle.plugin.avro.GenerateAvroJavaTask) {
  source("src/main/avro")
  outputDir = file("src/main/gen-avro")
}

compileJava {
  dependsOn tasks.generateAvro
}

checkstyleMain.source = ['src/main/java','src/test/java']

findbugs {
  excludeFilter = file("buildConfig/findbugs-exclude-filter.xml")
}

ext.classification="library"
// Ignore the generated java code and avro residing in main
checkstyleMain.source = "src/main/java"