buildscript {
  ext {
    javaVersion = "1.8"
    javaeeVersion = "8.0"
    facesVersion = "2.2.16"
    slf4jVersion = "1.7.25"
    lombokVersion = "1.16.20"
    junitJupiterVersion = "5.0.2"
    junitPlatformVersion = "1.0.2"
  }
  repositories {
    mavenLocal()
    mavenCentral()
  }
  dependencies {
    classpath "org.junit.platform:junit-platform-gradle-plugin:$junitPlatformVersion"
  }
}

plugins {
  //id "ear"
  id "war"
  id "idea"
  id "maven"
  id "eclipse"
  id "com.avast.gradle.docker-compose" version "0.6.13"
}

apply plugin: "org.junit.platform.gradle.plugin"

group = "daggerok"
version = "0.0.1"
sourceCompatibility = targetCompatibility = "$javaVersion"

//ear { archiveName = "${project.name}.ear" }
war {
  archiveName = "${project.name}.war"
}

defaultTasks "clean", "build"

repositories {
  mavenLocal()
  mavenCentral()
}

compileJava.dependsOn(processResources)

dependencies {

  compile("com.sun.faces:jsf-api:$facesVersion")
  compile("com.sun.faces:jsf-impl:$facesVersion")
  //// Tomcat requires weld dependency:
  //compile("org.jboss.weld.servlet:weld-servlet:2.4.7.Final")
  providedCompile("javax:javaee-web-api:$javaeeVersion")

  annotationProcessor("org.projectlombok:lombok:$lombokVersion")
  //testCompileOnly("org.projectlombok:lombok:$lombokVersion")
  compile("org.slf4j:slf4j-api:$slf4jVersion")
  compile("org.slf4j:slf4j-jdk14:$slf4jVersion")

  testCompile("junit:junit:4.12")
  testImplementation("org.junit.jupiter:junit-jupiter-api:$junitJupiterVersion")
  testImplementation("org.hamcrest:hamcrest-core:1.3")
  testRuntime("org.junit.jupiter:junit-jupiter-api:$junitJupiterVersion")
  testRuntime("org.junit.jupiter:junit-jupiter-engine:$junitJupiterVersion")
  testRuntime("org.junit.vintage:junit-vintage-engine:4.12.3")
  testRuntime("org.junit.platform:junit-platform-launcher:$junitPlatformVersion")
  testCompileOnly("org.apiguardian:apiguardian-api:1.0.0")
}

def profile = project.hasProperty("profile") ? project.getProperty("profile") : "gradle"

dockerCompose {
  useComposeFiles = [project.file("docker-compose-${profile}.yaml")]
  // captureContainersOutput = true
  captureContainersOutput = false
  stopContainers = true
  removeContainers = true
  removeImages = "Local"
  removeVolumes = true
  removeOrphans = true
  forceRecreate = true
  waitForTcpPorts = false
  projectName = project.name
}

composeUp.dependsOn assemble

task wrapper(type: Wrapper) {
  gradleVersion = "4.6"
  distributionType = "ALL"
}

idea {
  module {
    downloadSources = true
  }
}

eclipse {
  classpath {
    downloadSources = true
  }
}
