From ba6493b9571f1eb464fd5e76812e09d97819d97e Mon Sep 17 00:00:00 2001 From: exoego Date: Fri, 29 May 2020 11:04:49 +0900 Subject: [PATCH 1/3] DRY sub project definitions --- build.sbt | 78 ++++++++++++++++--------------------------------------- 1 file changed, 22 insertions(+), 56 deletions(-) diff --git a/build.sbt b/build.sbt index bd0539519..eeed5884d 100644 --- a/build.sbt +++ b/build.sbt @@ -19,60 +19,26 @@ lazy val core = (project in file("./core")) libraryDependencies ++= Dependencies.core.value ) -lazy val nodejs_v14 = (project in file("./app/nodejs-v14")) - .enablePlugins(ScalaJSPlugin) - .settings(MySettings.commonSettings) - .settings(MySettings.commonScalaJsSettings) - .settings(MySettings.commonMacroParadiseSetting) - .settings(MySettings.publishingSettings) - .settings( - scalacOptions ++= Seq( - "-Xmacro-settings:nodeJs14.3.0" - ), - name := "scala-js-nodejs-v14", - description := "NodeJS v14 API for Scala.js", - libraryDependencies ++= Dependencies.app.value - ) - .dependsOn(core) +lazy val nodejs_v14 = createNodeVersionSpecificProject("14.3.0") +lazy val nodejs_v12 = createNodeVersionSpecificProject("12.16.3") +lazy val nodejs_v10 = createNodeVersionSpecificProject("10.20.1") -lazy val nodejs_v12 = (project in file("./app/nodejs-v12")) - .enablePlugins(ScalaJSPlugin) - .settings(MySettings.commonSettings) - .settings(MySettings.commonScalaJsSettings) - .settings(MySettings.commonMacroParadiseSetting) - .settings(MySettings.publishingSettings) - .settings( - unmanagedSourceDirectories in Compile ++= { - val symlinkDir = baseDirectory.value / "src" / "main" - val hasSymlink = symlinkDir.exists && symlinkDir.isDirectory - Seq((baseDirectory in nodejs_v14).value / "src" / "main" / "scala").filter(_ => !hasSymlink) - }, - scalacOptions ++= Seq( - "-Xmacro-settings:nodeJs12.16.3" - ), - name := "scala-js-nodejs-v12", - description := "NodeJS v12 API for Scala.js", - libraryDependencies ++= Dependencies.app.value - ) - .dependsOn(core) - -lazy val nodejs_v10 = (project in file("./app/nodejs-v10")) - .enablePlugins(ScalaJSPlugin) - .settings(MySettings.commonSettings) - .settings(MySettings.commonScalaJsSettings) - .settings(MySettings.commonMacroParadiseSetting) - .settings(MySettings.publishingSettings) - .settings( - unmanagedSourceDirectories in Compile ++= { - val symlinkDir = baseDirectory.value / "src" / "main" - val hasSymlink = symlinkDir.exists && symlinkDir.isDirectory - Seq((baseDirectory in nodejs_v14).value / "src" / "main" / "scala").filter(_ => !hasSymlink) - }, - scalacOptions ++= Seq( - "-Xmacro-settings:nodeJs10.20.1" - ), - name := "scala-js-nodejs-v10", - description := "NodeJS v10 API for Scala.js", - libraryDependencies ++= Dependencies.app.value - ) - .dependsOn(core) +def createNodeVersionSpecificProject(nodeFullVersion: String) = { + val majorVersion = nodeFullVersion.split("\\.")(0) + sbt + .Project(id = s"nodejs_v${majorVersion}", base = file(s"./app/nodejs-v${majorVersion}")) + .enablePlugins(ScalaJSPlugin) + .settings(MySettings.commonSettings) + .settings(MySettings.commonScalaJsSettings) + .settings(MySettings.commonMacroParadiseSetting) + .settings(MySettings.publishingSettings) + .settings( + scalacOptions ++= Seq( + s"-Xmacro-settings:nodeJs${nodeFullVersion}" + ), + name := s"scala-js-nodejs-v${majorVersion}", + description := s"NodeJS v${majorVersion} API for Scala.js", + libraryDependencies ++= Dependencies.app.value + ) + .dependsOn(core) +} From d0b03cc0a94574959c232bd2eb206b258ec3091a Mon Sep 17 00:00:00 2001 From: exoego Date: Fri, 29 May 2020 11:05:44 +0900 Subject: [PATCH 2/3] Ignore symlinks --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index e57e34143..94fb96bff 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,6 @@ project/boot/ .history .cache +# Ignroe symlinks +app/nodejs-v10/src/main +app/nodejs-v12/src/main From 7e2234607764c3000ee1ab7541ba09958b8dd9a0 Mon Sep 17 00:00:00 2001 From: exoego Date: Fri, 29 May 2020 17:37:56 +0900 Subject: [PATCH 3/3] Use shared source for every project except latest --- build.sbt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build.sbt b/build.sbt index eeed5884d..cdb72729e 100644 --- a/build.sbt +++ b/build.sbt @@ -33,6 +33,11 @@ def createNodeVersionSpecificProject(nodeFullVersion: String) = { .settings(MySettings.commonMacroParadiseSetting) .settings(MySettings.publishingSettings) .settings( + unmanagedSourceDirectories in Compile ++= { + val symlinkDir = baseDirectory.value / "src" / "main" + val hasSymlink = symlinkDir.exists && symlinkDir.isDirectory + Seq(file("app") / "nodejs-v14" / "src" / "main" / "scala").filter(_ => majorVersion != "14" && !hasSymlink) + }, scalacOptions ++= Seq( s"-Xmacro-settings:nodeJs${nodeFullVersion}" ),