-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathBuildSettings.scala
More file actions
57 lines (45 loc) · 1.7 KB
/
BuildSettings.scala
File metadata and controls
57 lines (45 loc) · 1.7 KB
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
package millbuild.settings
import zio.{ ConfigProvider, Unsafe, Runtime }
import zio.config._
import zio.config.magnolia.deriveConfig
import zio.config.typesafe._
import zio.config.yaml._
import com.typesafe.config.ConfigFactory
import zio.Config
final case class BuildSettings(
jvm: JvmBuildSettings = JvmBuildSettings(),
js: ScalaJsBuildSettings = ScalaJsBuildSettings(),
native: ScalaNativeBuildSettings = ScalaNativeBuildSettings(),
mill: MillSettings = MillSettings(),
scala: ScalaSettings = ScalaSettings()
)
object BuildSettings {
val config: Config[BuildSettings] = deriveConfig[BuildSettings]
lazy val default: BuildSettings = BuildSettings()
implicit lazy val rw: upickle.default.ReadWriter[BuildSettings] = upickle.default.macroRW
lazy val buildUserHoconFileConfigProvider: ConfigProvider =
ConfigProvider.fromHoconFile((os.pwd / "build.user.conf").toIO)
lazy val buildEnvConfigProvider: ConfigProvider =
ConfigProvider.envProvider.nested("morphir_build")
lazy val propertiesFileConfigProvider: ConfigProvider =
ConfigProvider.propsProvider.nested("morphir.build")
// .fromPropertiesFile((os.pwd / "build.user.properties").toIO)
lazy val buildUserYamlFileConfigProvider =
ConfigProvider.fromYamlPath((os.pwd / "build.user.yaml").wrapped)
def load(): BuildSettings = Unsafe.unsafe { implicit u =>
Runtime.default.unsafe
.run(
loadSettings()
)
.getOrThrowFiberFailure()
}
def loadSettings() =
read(
BuildSettings.config from (
buildEnvConfigProvider orElse
propertiesFileConfigProvider orElse
buildUserHoconFileConfigProvider // orElse
// buildUserYamlFileConfigProvider
)
)
}