Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit a2a137b

Browse files
authored
Merge pull request #245 from exoego/dry
DRY sub project definitions
2 parents cdd87ca + 7e22346 commit a2a137b

File tree

2 files changed

+30
-56
lines changed

2 files changed

+30
-56
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,6 @@ project/boot/
3232
.history
3333
.cache
3434

35+
# Ignroe symlinks
36+
app/nodejs-v10/src/main
37+
app/nodejs-v12/src/main

build.sbt

Lines changed: 27 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -19,60 +19,31 @@ lazy val core = (project in file("./core"))
1919
libraryDependencies ++= Dependencies.core.value
2020
)
2121

22-
lazy val nodejs_v14 = (project in file("./app/nodejs-v14"))
23-
.enablePlugins(ScalaJSPlugin)
24-
.settings(MySettings.commonSettings)
25-
.settings(MySettings.commonScalaJsSettings)
26-
.settings(MySettings.commonMacroParadiseSetting)
27-
.settings(MySettings.publishingSettings)
28-
.settings(
29-
scalacOptions ++= Seq(
30-
"-Xmacro-settings:nodeJs14.3.0"
31-
),
32-
name := "scala-js-nodejs-v14",
33-
description := "NodeJS v14 API for Scala.js",
34-
libraryDependencies ++= Dependencies.app.value
35-
)
36-
.dependsOn(core)
22+
lazy val nodejs_v14 = createNodeVersionSpecificProject("14.3.0")
23+
lazy val nodejs_v12 = createNodeVersionSpecificProject("12.16.3")
24+
lazy val nodejs_v10 = createNodeVersionSpecificProject("10.20.1")
3725

38-
lazy val nodejs_v12 = (project in file("./app/nodejs-v12"))
39-
.enablePlugins(ScalaJSPlugin)
40-
.settings(MySettings.commonSettings)
41-
.settings(MySettings.commonScalaJsSettings)
42-
.settings(MySettings.commonMacroParadiseSetting)
43-
.settings(MySettings.publishingSettings)
44-
.settings(
45-
unmanagedSourceDirectories in Compile ++= {
46-
val symlinkDir = baseDirectory.value / "src" / "main"
47-
val hasSymlink = symlinkDir.exists && symlinkDir.isDirectory
48-
Seq((baseDirectory in nodejs_v14).value / "src" / "main" / "scala").filter(_ => !hasSymlink)
49-
},
50-
scalacOptions ++= Seq(
51-
"-Xmacro-settings:nodeJs12.16.3"
52-
),
53-
name := "scala-js-nodejs-v12",
54-
description := "NodeJS v12 API for Scala.js",
55-
libraryDependencies ++= Dependencies.app.value
56-
)
57-
.dependsOn(core)
58-
59-
lazy val nodejs_v10 = (project in file("./app/nodejs-v10"))
60-
.enablePlugins(ScalaJSPlugin)
61-
.settings(MySettings.commonSettings)
62-
.settings(MySettings.commonScalaJsSettings)
63-
.settings(MySettings.commonMacroParadiseSetting)
64-
.settings(MySettings.publishingSettings)
65-
.settings(
66-
unmanagedSourceDirectories in Compile ++= {
67-
val symlinkDir = baseDirectory.value / "src" / "main"
68-
val hasSymlink = symlinkDir.exists && symlinkDir.isDirectory
69-
Seq((baseDirectory in nodejs_v14).value / "src" / "main" / "scala").filter(_ => !hasSymlink)
70-
},
71-
scalacOptions ++= Seq(
72-
"-Xmacro-settings:nodeJs10.20.1"
73-
),
74-
name := "scala-js-nodejs-v10",
75-
description := "NodeJS v10 API for Scala.js",
76-
libraryDependencies ++= Dependencies.app.value
77-
)
78-
.dependsOn(core)
26+
def createNodeVersionSpecificProject(nodeFullVersion: String) = {
27+
val majorVersion = nodeFullVersion.split("\\.")(0)
28+
sbt
29+
.Project(id = s"nodejs_v${majorVersion}", base = file(s"./app/nodejs-v${majorVersion}"))
30+
.enablePlugins(ScalaJSPlugin)
31+
.settings(MySettings.commonSettings)
32+
.settings(MySettings.commonScalaJsSettings)
33+
.settings(MySettings.commonMacroParadiseSetting)
34+
.settings(MySettings.publishingSettings)
35+
.settings(
36+
unmanagedSourceDirectories in Compile ++= {
37+
val symlinkDir = baseDirectory.value / "src" / "main"
38+
val hasSymlink = symlinkDir.exists && symlinkDir.isDirectory
39+
Seq(file("app") / "nodejs-v14" / "src" / "main" / "scala").filter(_ => majorVersion != "14" && !hasSymlink)
40+
},
41+
scalacOptions ++= Seq(
42+
s"-Xmacro-settings:nodeJs${nodeFullVersion}"
43+
),
44+
name := s"scala-js-nodejs-v${majorVersion}",
45+
description := s"NodeJS v${majorVersion} API for Scala.js",
46+
libraryDependencies ++= Dependencies.app.value
47+
)
48+
.dependsOn(core)
49+
}

0 commit comments

Comments
 (0)