in modules/core/src/main/scala/org/scalasteward/core/repoconfig/RepoConfigAlg.scala [80:105]
def parseRepoConfig(input: String): Either[io.circe.Error, RepoConfig] =
parser.decode[RepoConfig](input)
private val repoConfigFileSearchPath: List[List[String]] =
List(List.empty, List(".github"), List(".config"))
private def activeConfigFile[F[_]](
repoDir: File
)(implicit fileAlg: FileAlg[F], logger: Logger[F], F: Monad[F]): F[Option[File]] = {
val configFileCandidates: F[List[File]] = (repoConfigFileSearchPath
.map(_ :+ repoConfigBasename) ++
repoConfigFileSearchPath
.map(_ :+ repoConfigBasename.substring(1)))
.map(path => path.foldLeft(repoDir)(_ / _))
.filterA(fileAlg.isRegularFile)
configFileCandidates.flatMap {
case Nil => F.pure(None)
case active :: remaining =>
F.pure(active.some)
.productL(
remaining
.traverse_(file => logger.warn(s"""Ignored config file "${file.pathAsString}""""))
)
}
}