@@ -20,8 +20,8 @@ import sbt._
20
20
import org .typelevel .sbt .gha .GenerativePlugin .autoImport ._
21
21
22
22
/**
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`.
25
25
*/
26
26
final class CrossRootProject private (
27
27
val all : Project ,
@@ -96,16 +96,16 @@ final class CrossRootProject private (
96
96
}
97
97
98
98
object 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))
101
101
102
102
def apply (): CrossRootProject = CrossRootProject (" root" )
103
103
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" ))
109
109
).enablePlugins(NoPublishPlugin , TypelevelCiCrossPlugin )
110
110
}
111
111
@@ -128,8 +128,10 @@ object TypelevelCiJVMPlugin extends AutoPlugin {
128
128
override def requires = TypelevelCiCrossPlugin
129
129
130
130
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 )
133
135
}
134
136
)
135
137
}
@@ -138,22 +140,28 @@ object TypelevelCiJSPlugin extends AutoPlugin {
138
140
override def requires = TypelevelCiCrossPlugin
139
141
140
142
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 )
143
147
},
144
148
githubWorkflowBuildMatrixExclusions ++= {
149
+ val rootProject = (LocalRootProject / Keys .thisProject).value
145
150
githubWorkflowJavaVersions
146
151
.value
147
152
.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)))
149
155
},
150
- githubWorkflowBuild ~= { steps =>
156
+ githubWorkflowBuild := {
157
+ val steps = githubWorkflowBuild.value
158
+ val rootProject = (LocalRootProject / Keys .thisProject).value
151
159
steps.flatMap {
152
160
case testStep @ WorkflowStep .Sbt (List (" test" ), _, _, _, _, _) =>
153
161
val fastOptStep = WorkflowStep .Sbt (
154
162
List (" Test/scalaJSLinkerResult" ),
155
163
name = Some (" scalaJSLink" ),
156
- cond = Some (" matrix.project == 'rootJS '" )
164
+ cond = Some (s " matrix.project == ' ${rootProject.id} JS '" )
157
165
)
158
166
List (fastOptStep, testStep)
159
167
case step => List (step)
@@ -167,22 +175,28 @@ object TypelevelCiNativePlugin extends AutoPlugin {
167
175
override def requires = TypelevelCiCrossPlugin
168
176
169
177
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 )
172
182
},
173
183
githubWorkflowBuildMatrixExclusions ++= {
184
+ val rootProject = (LocalRootProject / Keys .thisProject).value
174
185
githubWorkflowJavaVersions
175
186
.value
176
187
.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)))
178
190
},
179
- githubWorkflowBuild ~= { steps =>
191
+ githubWorkflowBuild := {
192
+ val steps = githubWorkflowBuild.value
193
+ val rootProject = (LocalRootProject / Keys .thisProject).value
180
194
steps.flatMap {
181
195
case testStep @ WorkflowStep .Sbt (List (" test" ), _, _, _, _, _) =>
182
196
val nativeLinkStep = WorkflowStep .Sbt (
183
197
List (" Test/nativeLink" ),
184
198
name = Some (" nativeLink" ),
185
- cond = Some (" matrix.project == 'rootNative '" )
199
+ cond = Some (s " matrix.project == ' ${rootProject.id} Native '" )
186
200
)
187
201
List (nativeLinkStep, testStep)
188
202
case step => List (step)
0 commit comments