in modules/core/src/main/scala/org/scalasteward/core/edit/hooks/HookExecutor.scala [86:118]
private def addToGitBlameIgnoreRevs(
repo: Repo,
repoDir: File,
hook: PostUpdateHook,
commit: Commit,
commitMsg: CommitMsg,
signoffCommits: Option[Boolean]
): F[Option[Commit]] =
if (hook.addToGitBlameIgnoreRevs) {
for {
_ <- F.unit
file = repoDir / gitBlameIgnoreRevsName
newLines = s"# Scala Steward: ${commitMsg.title}\n${commit.sha1.value.value}\n"
oldContent <- fileAlg.readFile(file)
newContent = oldContent.fold(newLines)(_ + "\n" + newLines)
_ <- fileAlg.writeFile(file, newContent)
pathAsString = file.pathAsString
addAndCommit = gitAlg.add(repo, pathAsString).flatMap { _ =>
val blameIgnoreCommitMsg =
CommitMsg(s"Add '${commitMsg.title}' to $gitBlameIgnoreRevsName")
gitAlg.commitAllIfDirty(repo, blameIgnoreCommitMsg, signoffCommits)
}
maybeBlameIgnoreCommit <- gitAlg
.checkIgnore(repo, pathAsString)
.ifM(
logger
.warn(s"Impossible to add '$pathAsString' because it is git ignored.")
.as(Option.empty[Commit]),
addAndCommit
)
} yield maybeBlameIgnoreCommit
} else F.pure(None)