import sbt.Keys.version

enablePlugins(GitVersioning)
enablePlugins(DockerPlugin)

git.useGitDescribe := true

organization := "gerritforge"

name := "GerritAnalytics"

scalaVersion := "2.11.8"

val sparkVersion = "2.1.1"

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % sparkVersion % "provided"
    exclude("org.spark-project.spark", "unused"),
  "org.apache.spark" %% "spark-sql" % sparkVersion % "provided",
  "org.elasticsearch" %% "elasticsearch-spark-20" % "5.0.2"
    excludeAll ExclusionRule(organization = "org.apache.spark"),
  // json4s still needed by GerritProjects
  "org.json4s" %% "json4s-native" % "3.2.11",

  "com.typesafe.scala-logging" %% "scala-logging" % "3.7.2",

  "com.github.scopt" %% "scopt" % "3.6.0",
  "org.scalactic" %% "scalactic" % "3.0.1" % "test",
  "org.scalatest" %% "scalatest" % "3.0.1" % "test"
)

mainClass in (Compile,run) := Some("com.gerritforge.analytics.job.Main")

parallelExecution in Test := false

dockerfile in docker := {
  val artifact: File = assembly.value
  val artifactTargetPath = s"/app/${name.value}-assembly.jar"

  new Dockerfile {
   from("gerritforge/jw2017-spark")
    runRaw("apk add --no-cache wget")
    runRaw("mkdir -p /app")
    add(artifact, artifactTargetPath )
  }
}

imageNames in docker := Seq(
  ImageName(s"${organization.value}/spark-gerrit-analytics-etl:latest"),

  ImageName(
    namespace = Some(organization.value),
    repository = "spark-gerrit-analytics-etl",
    tag = Some(version.value)
  )
)

buildOptions in docker := BuildOptions(cache = false)