import com.typesafe.sbt.SbtNativePackager.Universal

import com.typesafe.sbt.packager.Keys._

name := "predictionio"

version in ThisBuild := "0.6.8"

organization in ThisBuild := "io.prediction"

scalaVersion in ThisBuild := "2.10.2"

scalacOptions in ThisBuild ++= Seq("-deprecation", "-unchecked", "-feature")

scalacOptions in (ThisBuild, Test) ++= Seq("-Yrangepos")

javacOptions in ThisBuild ++= Seq("-source", "1.6", "-target", "1.6", "-Xlint:deprecation", "-Xlint:unchecked")

libraryDependencies in ThisBuild ++= Seq(
  "com.github.nscala-time" %% "nscala-time" % "0.6.0",
  "org.slf4j" % "slf4j-log4j12" % "1.7.5" % "test",
  "org.specs2" %% "specs2" % "1.14" % "test")

publishTo in ThisBuild := Some(Resolver.file("file",  new File(Path.userHome.absolutePath+"/.m2/repository")))

publishMavenStyle in ThisBuild := true

parallelExecution in (ThisBuild, Test) := false

lazy val root = project.in(file(".")).aggregate(
  commons,
  output,
  processHadoopScalding,
  processEnginesCommonsEvalScalaParamGen,
  processEnginesCommonsEvalScalaU2ITrainingTestSplit,
  processEnginesItemRecAlgoScalaMahout,
  processEnginesItemRecEvalScalaTopKItems,
  processEnginesItemSimEvalScalaTopKItems,
  toolsConncheck,
  toolsSettingsInit,
  toolsSoftwareManager,
  toolsUsers)

// Commons and Output

lazy val commons = project in file("commons") settings(scalariformSettings: _*)

lazy val output = project.in(file("output")).dependsOn(commons).settings(scalariformSettings: _*)

// Process Assemblies

lazy val processHadoopScalding = project
  .in(file("process"))
  .aggregate(
    processCommonsHadoopScalding,
    processEnginesCommonsEvalHadoopScalding,
    processEnginesItemRecAlgoHadoopScalding,
    processEnginesItemRecEvalHadoopScalding,
    processEnginesItemSimAlgoHadoopScalding,
    processEnginesItemSimEvalHadoopScalding)
  .dependsOn(
    processCommonsHadoopScalding,
    processEnginesCommonsEvalHadoopScalding,
    processEnginesItemRecAlgoHadoopScalding,
    processEnginesItemRecEvalHadoopScalding,
    processEnginesItemSimAlgoHadoopScalding,
    processEnginesItemSimEvalHadoopScalding)

lazy val processCommonsHadoopScalding = project
  .in(file("process/commons/hadoop/scalding")).dependsOn(commons)
  .settings(scalariformSettings: _*)

lazy val processEnginesCommonsEvalHadoopScalding = project
  .in(file("process/engines/commons/evaluations/hadoop/scalding"))
  .aggregate(processEnginesCommonsEvalHadoopScaldingU2ITrainingTestSplit)
  .dependsOn(processEnginesCommonsEvalHadoopScaldingU2ITrainingTestSplit)

lazy val processEnginesCommonsEvalHadoopScaldingU2ITrainingTestSplit = project
  .in(file("process/engines/commons/evaluations/hadoop/scalding/u2itrainingtestsplit"))
  .dependsOn(processCommonsHadoopScalding)

lazy val processEnginesCommonsEvalScalaParamGen = project
  .in(file("process/engines/commons/evaluations/scala/paramgen"))
  .dependsOn(commons)
  .settings(scalariformSettings: _*)

lazy val processEnginesCommonsEvalScalaU2ITrainingTestSplit = project
  .in(file("process/engines/commons/evaluations/scala/u2itrainingtestsplit"))
  .dependsOn(commons)

lazy val processEnginesItemRecAlgoHadoopScalding = project
  .in(file("process/engines/itemrec/algorithms/hadoop/scalding"))
  .aggregate(
    processEnginesItemRecAlgoHadoopScaldingGeneric,
    processEnginesItemRecAlgoHadoopScaldingKnnitembased,
    processEnginesItemRecAlgoHadoopScaldingRandomrank,
    processEnginesItemRecAlgoHadoopScaldingLatestrank,
    processEnginesItemRecAlgoHadoopScaldingMahout)
  .dependsOn(
    processEnginesItemRecAlgoHadoopScaldingGeneric,
    processEnginesItemRecAlgoHadoopScaldingKnnitembased,
    processEnginesItemRecAlgoHadoopScaldingRandomrank,
    processEnginesItemRecAlgoHadoopScaldingLatestrank,
    processEnginesItemRecAlgoHadoopScaldingMahout)

lazy val processEnginesItemRecAlgoHadoopScaldingGeneric = project
  .in(file("process/engines/itemrec/algorithms/hadoop/scalding/generic"))
  .dependsOn(processCommonsHadoopScalding)
  .settings(scalariformSettings: _*)

lazy val processEnginesItemRecAlgoHadoopScaldingKnnitembased = project
  .in(file("process/engines/itemrec/algorithms/hadoop/scalding/knnitembased"))
  .dependsOn(processCommonsHadoopScalding)
  .settings(scalariformSettings: _*)

lazy val processEnginesItemRecAlgoHadoopScaldingRandomrank = project
  .in(file("process/engines/itemrec/algorithms/hadoop/scalding/randomrank"))
  .dependsOn(processCommonsHadoopScalding)
  .settings(scalariformSettings: _*)

lazy val processEnginesItemRecAlgoHadoopScaldingLatestrank = project
  .in(file("process/engines/itemrec/algorithms/hadoop/scalding/latestrank"))
  .dependsOn(processCommonsHadoopScalding)
  .settings(scalariformSettings: _*)

lazy val processEnginesItemRecAlgoHadoopScaldingMahout = project
  .in(file("process/engines/itemrec/algorithms/hadoop/scalding/mahout"))
  .dependsOn(processCommonsHadoopScalding)
  .settings(scalariformSettings: _*)

lazy val processEnginesItemRecAlgoScalaMahout = project
  .in(file("process/engines/itemrec/algorithms/scala/mahout"))
  .aggregate(
    processEnginesItemRecAlgoScalaMahoutCommons,
    processEnginesItemRecAlgoScalaMahoutALSWR,
    processEnginesItemRecAlgoScalaMahoutKNNUserBased,
    processEnginesItemRecAlgoScalaMahoutSlopeOne,
    processEnginesItemRecAlgoScalaMahoutSVDPlusPlus,
    processEnginesItemRecAlgoScalaMahoutSVDSGD,
    processEnginesItemRecAlgoScalaMahoutThresholdUserBased)
  .dependsOn(
    processEnginesItemRecAlgoScalaMahoutCommons,
    processEnginesItemRecAlgoScalaMahoutALSWR,
    processEnginesItemRecAlgoScalaMahoutKNNUserBased,
    processEnginesItemRecAlgoScalaMahoutSlopeOne,
    processEnginesItemRecAlgoScalaMahoutSVDPlusPlus,
    processEnginesItemRecAlgoScalaMahoutSVDSGD,
    processEnginesItemRecAlgoScalaMahoutThresholdUserBased)

lazy val processEnginesItemRecAlgoScalaMahoutCommons = project
  .in(file("process/engines/itemrec/algorithms/scala/mahout/commons"))
  .dependsOn(commons)

lazy val processEnginesItemRecAlgoScalaMahoutALSWR = project
  .in(file("process/engines/itemrec/algorithms/scala/mahout/alswr"))
  .dependsOn(processEnginesItemRecAlgoScalaMahoutCommons)

lazy val processEnginesItemRecAlgoScalaMahoutKNNUserBased = project
  .in(file("process/engines/itemrec/algorithms/scala/mahout/knnuserbased"))
  .dependsOn(processEnginesItemRecAlgoScalaMahoutCommons)

lazy val processEnginesItemRecAlgoScalaMahoutSlopeOne = project
  .in(file("process/engines/itemrec/algorithms/scala/mahout/slopeone"))
  .dependsOn(processEnginesItemRecAlgoScalaMahoutCommons)

lazy val processEnginesItemRecAlgoScalaMahoutSVDPlusPlus = project
  .in(file("process/engines/itemrec/algorithms/scala/mahout/svdplusplus"))
  .dependsOn(processEnginesItemRecAlgoScalaMahoutCommons)

lazy val processEnginesItemRecAlgoScalaMahoutSVDSGD = project
  .in(file("process/engines/itemrec/algorithms/scala/mahout/svdsgd"))
  .dependsOn(processEnginesItemRecAlgoScalaMahoutCommons)

lazy val processEnginesItemRecAlgoScalaMahoutThresholdUserBased = project
  .in(file("process/engines/itemrec/algorithms/scala/mahout/thresholduserbased"))
  .dependsOn(processEnginesItemRecAlgoScalaMahoutCommons)

lazy val processEnginesItemRecEvalHadoopScalding = project
  .in(file("process/engines/itemrec/evaluations/hadoop/scalding"))
  .aggregate(
    processEnginesItemRecEvalHadoopScaldingMetricsMAP)
  .dependsOn(
    processEnginesItemRecEvalHadoopScaldingMetricsMAP)

lazy val processEnginesItemRecEvalHadoopScaldingMetricsMAP = project
  .in(file("process/engines/itemrec/evaluations/hadoop/scalding/metrics/map"))
  .dependsOn(processCommonsHadoopScalding)

lazy val processEnginesItemRecEvalScalaTopKItems = project
  .in(file("process/engines/itemrec/evaluations/scala/topkitems"))
  .dependsOn(commons, output)

lazy val processEnginesItemSimAlgoHadoopScalding = project
  .in(file("process/engines/itemsim/algorithms/hadoop/scalding"))
  .aggregate(
    processEnginesItemSimAlgoHadoopScaldingItemSimCF,
    processEnginesItemSimAlgoHadoopScaldingLatestRank,
    processEnginesItemSimAlgoHadoopScaldingMahout,
    processEnginesItemSimAlgoHadoopScaldingRandomRank)
  .dependsOn(
    processEnginesItemSimAlgoHadoopScaldingItemSimCF,
    processEnginesItemSimAlgoHadoopScaldingLatestRank,
    processEnginesItemSimAlgoHadoopScaldingMahout,
    processEnginesItemSimAlgoHadoopScaldingRandomRank)

lazy val processEnginesItemSimAlgoHadoopScaldingItemSimCF = project
  .in(file("process/engines/itemsim/algorithms/hadoop/scalding/itemsimcf"))
  .dependsOn(processCommonsHadoopScalding)

lazy val processEnginesItemSimAlgoHadoopScaldingLatestRank = project
  .in(file("process/engines/itemsim/algorithms/hadoop/scalding/latestrank"))
  .dependsOn(processCommonsHadoopScalding)

lazy val processEnginesItemSimAlgoHadoopScaldingMahout = project
  .in(file("process/engines/itemsim/algorithms/hadoop/scalding/mahout"))
  .dependsOn(processCommonsHadoopScalding)

lazy val processEnginesItemSimAlgoHadoopScaldingRandomRank = project
  .in(file("process/engines/itemsim/algorithms/hadoop/scalding/randomrank"))
  .dependsOn(processCommonsHadoopScalding)

lazy val processEnginesItemSimEvalHadoopScalding = project
  .in(file("process/engines/itemsim/evaluations/hadoop/scalding"))
  .aggregate(
    processEnginesItemSimEvalHadoopScaldingMetricsISMAP)
  .dependsOn(
    processEnginesItemSimEvalHadoopScaldingMetricsISMAP)

lazy val processEnginesItemSimEvalHadoopScaldingMetricsISMAP = project
  .in(file("process/engines/itemsim/evaluations/hadoop/scalding/metrics/ismap"))
  .dependsOn(processCommonsHadoopScalding)

lazy val processEnginesItemSimEvalScalaTopKItems = project
  .in(file("process/engines/itemsim/evaluations/scala/topkitems"))
  .dependsOn(commons, output)

// Tools Section

lazy val toolsConncheck = project.in(file("tools/conncheck"))
  .dependsOn(commons)

lazy val toolsSettingsInit = project.in(file("tools/settingsinit"))
  .dependsOn(commons)

lazy val toolsSoftwareManager = project.in(file("tools/softwaremanager"))
  .dependsOn(commons)

lazy val toolsUsers = project.in(file("tools/users"))
  .dependsOn(commons)
