-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathbuild.sbt
119 lines (103 loc) · 4.02 KB
/
build.sbt
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import sbt.Project.projectToRef
import Dependencies._
import com.typesafe.sbt.packager.docker.ExecCmd
name in ThisBuild := """bay-scalajs"""
version in ThisBuild := "0.1-SNAPSHOT"
scalaVersion in ThisBuild := "2.11.11"
resolvers in ThisBuild ++= Seq(Resolver.bintrayRepo("scalameta", "maven"), Resolver.jcenterRepo)
lazy val web = (project in file("web"))
.settings(
scalaJSUseMainModuleInitializer := true,
enableReloadWorkflow := false,
emitSourceMaps := false,
webpackConfigFile in fullOptJS := Some(baseDirectory.value / "prod.webpack.config.js"),
libraryDependencies ++= Seq(
"com.github.japgolly.scalajs-react" %%% "core" % scalajsReact,
"com.github.japgolly.scalajs-react" %%% "extra" % scalajsReact,
"org.scala-js" %%% "scalajs-dom" % scalajsDom,
"io.github.cquiroz" %%% "scala-java-time" % scalaJavaTime
),
npmDependencies in Compile ++= Seq(
"react" -> "15.5.4",
"react-dom" -> "15.5.4"
)
)
.dependsOn(sharedJS)
.enablePlugins(ScalaJSPlugin, ScalaJSBundlerPlugin, ScalaJSWeb)
lazy val dbdriver = (project in file("dbdriver"))
.settings(
libraryDependencies ++= Seq(
"com.github.tminglei" %% "slick-pg" % slickPg,
"com.github.tminglei" %% "slick-pg_circe-json" % slickPg
)
)
.dependsOn(sharedJVM)
lazy val dbschema = (project in file("dbschema"))
.settings(
libraryDependencies ++= Seq(
"com.typesafe.slick" %% "slick" % slick
)
)
.dependsOn(sharedJVM, dbdriver)
lazy val codegen = (project in file("codegen"))
.settings(libraryDependencies ++= Seq(
"org.flywaydb" % "flyway-core" % flyway,
"com.typesafe.slick" %% "slick-codegen" % slick,
"org.scalameta" %% "scalameta" % scalaMeta,
"com.geirsson" %% "scalafmt-core" % scalaFmt,
"com.github.pathikrit" %% "better-files" % betterFiles,
"io.swagger" % "swagger-parser" % swaggerParser
))
.dependsOn(dbdriver)
lazy val server = (project in file("server"))
.settings(
name := (name in ThisBuild).value,
commands ++= Seq(CodegenCmd, RecreateCmd, SwaggerCmd),
WebKeys.exportedMappings in Assets := Seq(),
libraryDependencies ++= Seq(
filters,
jdbc,
cache,
ws,
"com.github.t3hnar" %% "scala-bcrypt" % bcrypt,
"com.typesafe.slick" %% "slick" % slick,
"com.typesafe.play" %% "play-slick" % playSlick,
"jp.t2v" %% "play2-auth" % playAuth,
"org.flywaydb" %% "flyway-play" % flywayPlay,
"com.github.pathikrit" %% "better-files" % betterFiles,
"play-circe" %% "play-circe" % playCirce
),
scalaJSProjects := Seq(web),
pipelineStages in Assets := Seq(scalaJSPipeline, digest, gzip),
routesGenerator := InjectedRoutesGenerator
)
.dependsOn(dbdriver, dbschema)
.enablePlugins(PlayScala, SbtWeb, WebScalaJSBundlerPlugin, DockerPlugin, JavaServerAppPackaging)
lazy val shared = (crossProject.crossType(CrossType.Pure) in file("shared"))
.settings(libraryDependencies ++= Seq(
"de.daxten" %%% "autowire" % autowire,
"org.typelevel" %%% "cats" % cats,
"io.circe" %%% "circe-core" % circeVersion,
"io.circe" %%% "circe-generic" % circeVersion,
"io.circe" %%% "circe-parser" % circeVersion,
"com.lihaoyi" %%% "upickle" % upickle
))
.jsConfigure(_.enablePlugins(ScalaJSPlugin))
.jsSettings()
lazy val sharedJVM = shared.jvm
lazy val sharedJS = shared.js
onLoad in Global := (Command
.process("project server", _: State))
.compose((onLoad in Global).value)
lazy val CodegenCmd = Command.command("codegen") { state =>
"codegen/run-main app.DbCodegen" ::
state
}
lazy val SwaggerCmd = Command.command("swagger") { state =>
"codegen/run-main app.SwaggerCodegen" ::
state
}
lazy val RecreateCmd = Command.command("codegen-re") { state =>
"codegen/run-main app.DbCodegen recreate" ::
state
}