Skip to content

Commit af9c3e2

Browse files
authored
Merge pull request #3564 from scala-steward-org/topic/scala-cli-scalafix
Support Scalafix migrations in Scala CLI builds
2 parents 6c10f0f + d1f7677 commit af9c3e2

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

modules/core/src/main/scala/org/scalasteward/core/buildtool/scalacli/ScalaCliAlg.scala

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import cats.syntax.all.*
2121
import org.scalasteward.core.buildtool.sbt.SbtAlg
2222
import org.scalasteward.core.buildtool.{BuildRoot, BuildToolAlg}
2323
import org.scalasteward.core.data.Scope
24+
import org.scalasteward.core.edit.scalafix.ScalafixMigration
2425
import org.scalasteward.core.git.GitAlg
2526
import org.scalasteward.core.io.process.SlurpOptions
2627
import org.scalasteward.core.io.{FileAlg, ProcessAlg, WorkspaceAlg}
@@ -91,6 +92,12 @@ final class ScalaCliAlg[F[_]](implicit
9192
_ <- fileAlg.deleteForce(buildRootDir / exportDir)
9293
} yield dependencies
9394

94-
override protected val scalafixIssue: Option[String] =
95-
Some("https://github.com/scala-steward-org/scala-steward/issues/3486")
95+
override def runMigration(buildRoot: BuildRoot, migration: ScalafixMigration): F[Unit] =
96+
for {
97+
buildRootDir <- workspaceAlg.buildRootDir(buildRoot)
98+
cmd = Nel.of("scala-cli", "--power", "fix", "--scalafix-rules") :::
99+
migration.rewriteRules.append(buildRootDir.pathAsString)
100+
slurpOptions = SlurpOptions.ignoreBufferOverflow
101+
_ <- processAlg.execSandboxed(cmd, buildRootDir, slurpOptions = slurpOptions)
102+
} yield ()
96103
}

modules/core/src/test/scala/org/scalasteward/core/buildtool/scalacli/ScalaCliAlgTest.scala

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import org.scalasteward.core.buildtool.sbt.command.*
77
import org.scalasteward.core.data.{GroupId, Repo, Version}
88
import org.scalasteward.core.edit.scalafix.ScalafixMigration
99
import org.scalasteward.core.mock.MockContext.context.*
10-
import org.scalasteward.core.mock.MockState.TraceEntry.{Cmd, Log}
10+
import org.scalasteward.core.mock.MockState.TraceEntry.Cmd
1111
import org.scalasteward.core.mock.{MockEffOps, MockState}
1212
import org.scalasteward.core.util.Nel
1313

@@ -84,8 +84,9 @@ class ScalaCliAlgTest extends CatsEffectSuite {
8484
}
8585

8686
test("runMigration") {
87-
val repo = Repo("user", "repo")
87+
val repo = Repo("scala-cli-alg", "test-runMigration")
8888
val buildRoot = BuildRoot(repo, ".")
89+
val buildRootDir = workspaceAlg.buildRootDir(buildRoot).unsafeRunSync()
8990
val migration = ScalafixMigration(
9091
GroupId("co.fs2"),
9192
Nel.of("fs2-core"),
@@ -94,6 +95,19 @@ class ScalaCliAlgTest extends CatsEffectSuite {
9495
signoffCommits = None
9596
)
9697
val obtained = scalaCliAlg.runMigration(buildRoot, migration).runS(MockState.empty)
97-
assertIO(obtained.map(_.trace.collect { case Log(_) => () }.size), 1)
98+
val expected = MockState.empty.copy(trace =
99+
Vector(
100+
Cmd.execSandboxed(
101+
buildRootDir,
102+
"scala-cli",
103+
"--power",
104+
"fix",
105+
"--scalafix-rules",
106+
"github:functional-streams-for-scala/fs2/v1?sha=v1.0.5",
107+
buildRootDir.pathAsString
108+
)
109+
)
110+
)
111+
assertIO(obtained, expected)
98112
}
99113
}

0 commit comments

Comments
 (0)