@@ -20,8 +20,8 @@ import sbt._
2020import org .typelevel .sbt .gha .GenerativePlugin .autoImport ._
2121
2222/**
23- * Simultaneously creates a ` root`, `rootJVM`, `rootJS`, and `rootNative` project, and
24- * automatically enables the `NoPublishPlugin`.
23+ * Simultaneously creates a root project, a Scala JVM subproject, a Scala.js subproject, a Scala
24+ * Native subproject and automatically enables the `NoPublishPlugin`.
2525 */
2626final class CrossRootProject private (
2727 val all : Project ,
@@ -96,16 +96,16 @@ final class CrossRootProject private (
9696}
9797
9898object CrossRootProject {
99- def unapply (root : CrossRootProject ): Some [(Project , Project , Project , Project )] =
100- Some ((root .all, root .jvm, root .js, root .native))
99+ def unapply (rootProject : CrossRootProject ): Some [(Project , Project , Project , Project )] =
100+ Some ((rootProject .all, rootProject .jvm, rootProject .js, rootProject .native))
101101
102102 def apply (): CrossRootProject = CrossRootProject (" root" )
103103
104- def apply (name : String ): CrossRootProject = new CrossRootProject (
105- Project (name , file(" ." )),
106- Project (s " ${name }JVM " , file(" .jvm" )),
107- Project (s " ${name }JS " , file(" .js" )),
108- Project (s " ${name }Native " , file(" .native" ))
104+ def apply (id : String ): CrossRootProject = new CrossRootProject (
105+ Project (id , file(" ." )),
106+ Project (s " ${id }JVM " , file(" .jvm" )),
107+ Project (s " ${id }JS " , file(" .js" )),
108+ Project (s " ${id }Native " , file(" .native" ))
109109 ).enablePlugins(NoPublishPlugin , TypelevelCiCrossPlugin )
110110}
111111
@@ -128,8 +128,10 @@ object TypelevelCiJVMPlugin extends AutoPlugin {
128128 override def requires = TypelevelCiCrossPlugin
129129
130130 override def buildSettings : Seq [Setting [_]] = Seq (
131- githubWorkflowBuildMatrixAdditions ~= { matrix =>
132- matrix.updated(" project" , matrix(" project" ) ::: " rootJVM" :: Nil )
131+ githubWorkflowBuildMatrixAdditions := {
132+ val matrix = githubWorkflowBuildMatrixAdditions.value
133+ val rootProject = (LocalRootProject / Keys .thisProject).value
134+ matrix.updated(" project" , matrix(" project" ) ::: s " ${rootProject.id}JVM " :: Nil )
133135 }
134136 )
135137}
@@ -138,22 +140,28 @@ object TypelevelCiJSPlugin extends AutoPlugin {
138140 override def requires = TypelevelCiCrossPlugin
139141
140142 override def buildSettings : Seq [Setting [_]] = Seq (
141- githubWorkflowBuildMatrixAdditions ~= { matrix =>
142- matrix.updated(" project" , matrix(" project" ) ::: " rootJS" :: Nil )
143+ githubWorkflowBuildMatrixAdditions := {
144+ val matrix = githubWorkflowBuildMatrixAdditions.value
145+ val rootProject = (LocalRootProject / Keys .thisProject).value
146+ matrix.updated(" project" , matrix(" project" ) ::: s " ${rootProject.id}JS " :: Nil )
143147 },
144148 githubWorkflowBuildMatrixExclusions ++= {
149+ val rootProject = (LocalRootProject / Keys .thisProject).value
145150 githubWorkflowJavaVersions
146151 .value
147152 .tail
148- .map(java => MatrixExclude (Map (" project" -> " rootJS" , " java" -> java.render)))
153+ .map(java =>
154+ MatrixExclude (Map (" project" -> s " ${rootProject.id}JS " , " java" -> java.render)))
149155 },
150- githubWorkflowBuild ~= { steps =>
156+ githubWorkflowBuild := {
157+ val steps = githubWorkflowBuild.value
158+ val rootProject = (LocalRootProject / Keys .thisProject).value
151159 steps.flatMap {
152160 case testStep @ WorkflowStep .Sbt (List (" test" ), _, _, _, _, _) =>
153161 val fastOptStep = WorkflowStep .Sbt (
154162 List (" Test/scalaJSLinkerResult" ),
155163 name = Some (" scalaJSLink" ),
156- cond = Some (" matrix.project == 'rootJS '" )
164+ cond = Some (s " matrix.project == ' ${rootProject.id} JS '" )
157165 )
158166 List (fastOptStep, testStep)
159167 case step => List (step)
@@ -167,22 +175,28 @@ object TypelevelCiNativePlugin extends AutoPlugin {
167175 override def requires = TypelevelCiCrossPlugin
168176
169177 override def buildSettings : Seq [Setting [_]] = Seq (
170- githubWorkflowBuildMatrixAdditions ~= { matrix =>
171- matrix.updated(" project" , matrix(" project" ) ::: " rootNative" :: Nil )
178+ githubWorkflowBuildMatrixAdditions := {
179+ val matrix = githubWorkflowBuildMatrixAdditions.value
180+ val rootProject = (LocalRootProject / Keys .thisProject).value
181+ matrix.updated(" project" , matrix(" project" ) ::: s " ${rootProject.id}Native " :: Nil )
172182 },
173183 githubWorkflowBuildMatrixExclusions ++= {
184+ val rootProject = (LocalRootProject / Keys .thisProject).value
174185 githubWorkflowJavaVersions
175186 .value
176187 .tail
177- .map(java => MatrixExclude (Map (" project" -> " rootNative" , " java" -> java.render)))
188+ .map(java =>
189+ MatrixExclude (Map (" project" -> s " ${rootProject.id}Native " , " java" -> java.render)))
178190 },
179- githubWorkflowBuild ~= { steps =>
191+ githubWorkflowBuild := {
192+ val steps = githubWorkflowBuild.value
193+ val rootProject = (LocalRootProject / Keys .thisProject).value
180194 steps.flatMap {
181195 case testStep @ WorkflowStep .Sbt (List (" test" ), _, _, _, _, _) =>
182196 val nativeLinkStep = WorkflowStep .Sbt (
183197 List (" Test/nativeLink" ),
184198 name = Some (" nativeLink" ),
185- cond = Some (" matrix.project == 'rootNative '" )
199+ cond = Some (s " matrix.project == ' ${rootProject.id} Native '" )
186200 )
187201 List (nativeLinkStep, testStep)
188202 case step => List (step)
0 commit comments