in modules/core/src/main/scala/org/scalasteward/core/io/WorkspaceAlg.scala [43:82]
def create[F[_]](config: Config)(implicit
fileAlg: FileAlg[F],
logger: Logger[F],
F: Monad[F]
): WorkspaceAlg[F] =
new WorkspaceAlg[F] {
private val reposDir: File =
config.workspace / "repos"
private val runSummary: File =
config.workspace / RunSummaryFileName
/* We don't want the `ensureExists()` side-effect for these files - here, we only want to delete them,
* not accidentally re-create them while trying to delete them.
*/
private val runSpecificFiles: Seq[File] = Seq(runSummary, reposDir)
private def toFile(repo: Repo): File =
reposDir / repo.owner / repo.repo
private def toFile(buildRoot: BuildRoot): File =
toFile(buildRoot.repo) / buildRoot.relativePath
override def removeAnyRunSpecificFiles: F[Unit] =
logger.info(s"Removing any run-specific files") >> runSpecificFiles.traverse_(
fileAlg.deleteForce
)
override def rootDir: F[File] =
fileAlg.ensureExists(config.workspace)
override def runSummaryFile: F[File] =
fileAlg.ensureExists(runSummary.parent).map(_ => runSummary)
override def repoDir(repo: Repo): F[File] =
fileAlg.ensureExists(toFile(repo))
override def buildRootDir(buildRoot: BuildRoot): F[File] =
fileAlg.ensureExists(toFile(buildRoot))
}