plugins {
  id 'application'
  id 'java'
  id 'com.github.johnrengelman.shadow' version '4.0.1'
}

allprojects {
  apply plugin: 'application'
  apply plugin: 'java'
  apply plugin: 'com.github.johnrengelman.shadow'

  repositories {
    mavenCentral()
  }

  ext {
    vertxVersion = '3.7.0'
    commitTimestamp = {
      return "git log -1 --pretty=format:%cd --date=format:%Y%m%d%H%M%S".execute().text.trim()
    }
    commitId = {
      return "git rev-parse --short HEAD".execute().text.trim()
    }
    buildId = {
      if (System.getenv("BUILD_ID") != null) return ".${System.getenv("BUILD_ID")}"
      else return ""
    }
  }

  group = 'com.pluralsight.docker-production-aws'
  version = System.getenv("APP_VERSION") ?: "${commitTimestamp()}.${commitId()}${buildId()}"
  sourceCompatibility = '1.8'
  mainClassName = 'io.vertx.core.Launcher'

  dependencies {
    compile "io.vertx:vertx-core:$vertxVersion"
    compile "io.vertx:vertx-hazelcast:$vertxVersion"
    compile "io.vertx:vertx-service-discovery:$vertxVersion"
    compile "io.vertx:vertx-dropwizard-metrics:$vertxVersion"
    compile "com.typesafe:config:1.3.0"
    compile "com.hazelcast:hazelcast-cloud:3.6.5"
    testCompile "io.vertx:vertx-unit:$vertxVersion"
    testCompile "junit:junit:4.12"
    testCompile "org.assertj:assertj-core:3.5.2"
    testCompile "com.jayway.awaitility:awaitility:1.7.0"
  }

  task copyDeps(type: Copy) {
    from (configurations.runtime + configurations.testRuntime) exclude '*'
    into '/tmp'
  }

  test {
    testLogging {
      events "passed", "skipped", "failed"
    }
    reports {
      junitXml.enabled = true
      junitXml.destination = file("${rootProject.projectDir}/build/test-results/junit")
      html.enabled = false
    }
  }
}

task testReport(type: TestReport) {
  destinationDir = file("${rootProject.projectDir}/build/test-results/html")
  reportOn subprojects*.test
}

test {
  dependsOn testReport
}

configure(subprojects - project(':microtrader-common')) {
  shadowJar {
    destinationDir = file("${rootProject.projectDir}/build/jars")
    classifier = 'fat'
    mergeServiceFiles {
        include 'META-INF/services/io.vertx.core.spi.VerticleFactory'
    }
  }
}

task wrapper(type: Wrapper) {
  gradleVersion = '4.10.2'
}
