-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.sbt
123 lines (103 loc) · 5.21 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
120
121
122
123
import ProjectSettings.ProjectFrom
import com.typesafe.sbt.packager.docker.Cmd
ThisBuild / scalaVersion := "2.13.10"
ThisBuild / organization := "it.pagopa"
ThisBuild / organizationName := "Pagopa S.p.A."
ThisBuild / dependencyOverrides ++= Dependencies.Jars.overrides
ThisBuild / version := ComputeVersion.version
Global / onChangedBuildSource := ReloadOnSourceChanges
ThisBuild / githubOwner := "pagopa"
ThisBuild / githubRepository := "interop-be-purpose-process"
ThisBuild / resolvers += Resolver.githubPackages("pagopa")
lazy val generateCode = taskKey[Unit]("A task for generating the code starting from the swagger definition")
val packagePrefix = settingKey[String]("The package prefix derived from the uservice name")
packagePrefix := name.value
.replaceFirst("interop-", "interop.")
.replaceFirst("be-", "")
.replaceAll("-", "")
val projectName = settingKey[String]("The project name prefix derived from the uservice name")
projectName := name.value
.replaceFirst("interop-", "")
.replaceFirst("be-", "")
generateCode := {
import sys.process._
Process(s"""openapi-generator-cli generate -t template/scala-akka-http-server
| -i src/main/resources/interface-specification.yml
| -g scala-akka-http-server
| -p projectName=${projectName.value}
| -p invokerPackage=it.pagopa.${packagePrefix.value}.server
| -p modelPackage=it.pagopa.${packagePrefix.value}.model
| -p apiPackage=it.pagopa.${packagePrefix.value}.api
| -p modelPropertyNaming=original
| -p dateLibrary=java8
| -p entityStrictnessTimeout=15
| -o generated""".stripMargin).!!
Process(s"""openapi-generator-cli generate -t template/scala-akka-http-client
| -i src/main/resources/interface-specification.yml
| -g scala-akka
| -p projectName=${projectName.value}
| -p invokerPackage=it.pagopa.${packagePrefix.value}.client.invoker
| -p modelPackage=it.pagopa.${packagePrefix.value}.client.model
| -p apiPackage=it.pagopa.${packagePrefix.value}.client.api
| -p modelPropertyNaming=original
| -p dateLibrary=java8
| -o client""".stripMargin).!!
}
(Compile / compile) := ((Compile / compile) dependsOn generateCode).value
(Test / test) := ((Test / test) dependsOn generateCode).value
cleanFiles += baseDirectory.value / "generated" / "src"
cleanFiles += baseDirectory.value / "generated" / "target"
cleanFiles += baseDirectory.value / "client" / "src"
cleanFiles += baseDirectory.value / "client" / "target"
val runStandalone = inputKey[Unit]("Run the app using standalone configuration")
runStandalone := {
task(System.setProperty("config.file", "src/main/resources/application-standalone.conf")).value
(Compile / run).evaluated
}
lazy val generated = project
.in(file("generated"))
.settings(
scalacOptions := Seq(),
scalafmtOnCompile := true,
libraryDependencies := Dependencies.Jars.`server`,
publish / skip := true,
publish := (()),
publishLocal := (()),
publishTo := None
)
.setupBuildInfo
lazy val client = project
.in(file("client"))
.settings(
name := "interop-be-purpose-process-client",
scalacOptions := Seq(),
scalafmtOnCompile := true,
libraryDependencies := Dependencies.Jars.client,
updateOptions := updateOptions.value.withGigahorse(false),
Docker / publish := {}
)
lazy val root = (project in file("."))
.settings(
name := "interop-be-purpose-process",
Test / parallelExecution := false,
scalafmtOnCompile := true,
dockerBuildOptions ++= Seq("--network=host"),
dockerRepository := Some(System.getenv("ECR_REGISTRY")),
dockerBaseImage := "adoptopenjdk:11-jdk-hotspot",
daemonUser := "daemon",
Docker / version := (ThisBuild / version).value.replaceAll("-SNAPSHOT", "-latest").toLowerCase,
Docker / packageName := s"${name.value}",
Docker / dockerExposedPorts := Seq(8080),
Docker / maintainer := "https://pagopa.it",
libraryDependencies := Dependencies.Jars.`server`,
dockerCommands += Cmd("LABEL", s"org.opencontainers.image.source https://github.com/pagopa/${name.value}")
)
.aggregate(client)
.dependsOn(generated)
.enableContractTest
.enablePlugins(JavaAppPackaging)
.enablePlugins(DockerPlugin)
.enablePlugins(NoPublishPlugin)
.setupBuildInfo
Test / fork := true
Test / javaOptions += "-Dconfig.file=src/test/resources/application-test.conf"