aboutsummaryrefslogtreecommitdiff
path: root/project/Build.scala
blob: 9af8d042c3ebbf68b5f7694727ea6cb71db0283c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import sbt._
import Keys._
import org.scalafmt.sbt.ScalaFmtPlugin.autoImport._
import org.scalastyle.sbt.ScalastylePlugin._
import wartremover._
import wartremover.WartRemover.autoImport.wartremoverErrors


object BuildSettings {

  val wartRemoverSettings = Seq(
    wartremoverErrors in (Compile, compile) ++= Warts.allBut(
      Wart.AsInstanceOf, Wart.Nothing, Wart.Option2Iterable, Wart.ExplicitImplicitTypes,
      Wart.Overloading, Wart.DefaultArguments, Wart.ToString, Wart.Any, Wart.Throw)
  )

  val acyclicSettings = Seq(
    autoCompilerPlugins := true,
    addCompilerPlugin("com.lihaoyi" %% "acyclic" % "0.1.4")
  )

  val compileScalastyle = taskKey[Unit]("compileScalastyle")

  val buildSettings = Defaults.coreDefaultSettings ++ Seq (
    organization := "com.drivergrp",
    name         := "core",
    version      := "0.0.1",
    scalaVersion := "2.11.8",
    scalacOptions := Seq("-unchecked", "-deprecation", "-feature", "-Xlint", "-encoding", "utf8",
      "-language:higherKinds", "-language:implicitConversions", "-language:postfixOps",
      "-Ywarn-infer-any", "-Ywarn-unused", "-Ywarn-unused-import"),
    scalafmtConfig := Some(file(".scalafmt")),
    fork in run := true,
    compileScalastyle := (scalastyle in Compile).toTask("").value,
    (compile in Compile) <<= ((compile in Compile) dependsOn compileScalastyle)
  ) ++ wartRemoverSettings ++ acyclicSettings ++ reformatOnCompileSettings
}

object DriverBuild extends Build {
  import BuildSettings._

  val akkaHttpV = "2.4.8"

  val dependencies = Seq(
    "com.typesafe.akka"  %% "akka-http-core" % akkaHttpV,
    "com.typesafe.akka"  %% "akka-http-experimental" % akkaHttpV,
    "com.typesafe.akka"  %% "akka-http-jackson-experimental" % akkaHttpV,
    "com.typesafe.akka"  %% "akka-http-spray-json-experimental" % akkaHttpV,
    "com.typesafe.akka"  %% "akka-http-testkit" % akkaHttpV,
    "org.scalatest"      %  "scalatest_2.11" % "2.2.1" % "test",
    "com.typesafe.slick" %% "slick"  % "3.0.0",
    "com.typesafe"       %  "config" % "1.2.1",
    "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0",
    "ch.qos.logback"     % "logback-classic" % "1.1.3",
    "org.slf4j"          % "slf4j-nop"    % "1.6.4",
    "org.scalaz"         %% "scalaz-core" % "7.2.4",
    "com.github.swagger-akka-http" %% "swagger-akka-http" % "0.7.1",
    "com.lihaoyi" %% "acyclic" % "0.1.4" % "provided"
  )

  lazy val core = Project (
    "core",
    file ("."),
    settings = buildSettings ++ Seq (libraryDependencies ++= dependencies)
  )
}