Skip to content

Commit 31b992e

Browse files
committed
matrix
1 parent c9631cc commit 31b992e

File tree

1 file changed

+33
-36
lines changed

1 file changed

+33
-36
lines changed

github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativePlugin.scala

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -500,9 +500,15 @@ object GenerativePlugin extends AutoPlugin {
500500
}
501501
}
502502

503-
val renderedMatricesPre = job.matrixAdds.toList.sortBy(_._1) map {
504-
case (key, values) => s"$key: ${values.map(wrap).mkString("[", ", ", "]")}"
505-
} mkString "\n"
503+
val renderedMatricesAdds =
504+
if (job.matrixAdds.isEmpty) ""
505+
else
506+
job
507+
.matrixAdds
508+
.toList
509+
.sortBy(_._1)
510+
.map { case (key, values) => s"$key: ${values.map(wrap).mkString("[", ", ", "]")}" }
511+
.mkString("\n", "\n", "")
506512

507513
// TODO refactor all of this stuff to use whitelist instead
508514
val whitelist = Map(
@@ -524,44 +530,35 @@ object GenerativePlugin extends AutoPlugin {
524530
}
525531
}
526532

527-
val renderedIncludesPre = if (job.matrixIncs.isEmpty) {
528-
renderedMatricesPre
529-
} else {
530-
job.matrixIncs.foreach(inc => checkMatching(inc.matching))
531-
532-
val rendered = compileListOfSimpleDicts(
533-
job.matrixIncs.map(i => i.matching ++ i.additions))
533+
val renderedIncludes =
534+
if (job.matrixIncs.isEmpty) ""
535+
else {
536+
job.matrixIncs.foreach(inc => checkMatching(inc.matching))
534537

535-
val renderedMatrices =
536-
if (renderedMatricesPre.isEmpty)
537-
""
538-
else
539-
renderedMatricesPre + "\n"
540-
541-
s"${renderedMatrices}include:\n${indent(rendered, 1)}"
542-
}
538+
val rendered = compileListOfSimpleDicts(
539+
job.matrixIncs.map(i => i.matching ++ i.additions))
543540

544-
val renderedExcludesPre = if (job.matrixExcs.isEmpty) {
545-
renderedIncludesPre
546-
} else {
547-
job.matrixExcs.foreach(exc => checkMatching(exc.matching))
541+
s"\ninclude:\n${indent(rendered, 1)}"
542+
}
548543

549-
val rendered = compileListOfSimpleDicts(job.matrixExcs.map(_.matching))
544+
val renderedExcludes =
545+
if (job.matrixExcs.isEmpty) ""
546+
else {
547+
job.matrixExcs.foreach(exc => checkMatching(exc.matching))
550548

551-
val renderedIncludes =
552-
if (renderedIncludesPre.isEmpty)
553-
""
554-
else
555-
renderedIncludesPre + "\n"
549+
val rendered = compileListOfSimpleDicts(job.matrixExcs.map(_.matching))
556550

557-
s"${renderedIncludes}exclude:\n${indent(rendered, 1)}"
558-
}
551+
s"\nexclude:\n${indent(rendered, 1)}"
552+
}
559553

560-
val renderedMatrices =
561-
if (renderedExcludesPre.isEmpty)
562-
""
563-
else
564-
"\n" + indent(renderedExcludesPre, 2)
554+
val renderedMatrices = indent(
555+
buildMatrix(
556+
0,
557+
"os" -> job.oses,
558+
"scala" -> job.scalas,
559+
"java" -> job.javas.map(_.render)) +
560+
renderedMatricesAdds + renderedIncludes + renderedExcludes,
561+
2)
565562

566563
val declareShell = job.oses.exists(_.contains("windows"))
567564

@@ -583,7 +580,7 @@ object GenerativePlugin extends AutoPlugin {
583580
val body = s"""name: ${wrap(job.name)}${renderedNeeds}${renderedCond}
584581
|strategy:${renderedFailFast}
585582
| matrix:
586-
|${buildMatrix(2, "os" -> job.oses, "scala" -> job.scalas, "java" -> job.javas.map(_.render))}${renderedMatrices}
583+
|${renderedMatrices}
587584
|runs-on: ${runsOn}${renderedEnvironment}${renderedContainer}${renderedPerm}${renderedEnv}${renderedOutputs}${renderedConcurrency}${renderedTimeoutMinutes}
588585
|steps:
589586
|${renderedSteps}""".stripMargin

0 commit comments

Comments
 (0)