Skip to content

Commit 89dab7b

Browse files
Ensure that the root project ID is no longer hardcoded anywhere
1 parent b1bbae5 commit 89dab7b

File tree

1 file changed

+35
-21
lines changed

1 file changed

+35
-21
lines changed

ci/src/main/scala/org/typelevel/sbt/CrossRootProject.scala

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import sbt._
2020
import 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
*/
2626
final class CrossRootProject private (
2727
val all: Project,
@@ -96,16 +96,16 @@ final class CrossRootProject private (
9696
}
9797

9898
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))
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

Comments
 (0)