override def containsChanges()

in modules/core/src/main/scala/org/scalasteward/core/git/FileGitAlg.scala [80:112]


  override def containsChanges(repo: File): F[Boolean] =
    git_("status", "--porcelain", "--untracked-files=no", "--ignore-submodules")(repo)
      .map(_.nonEmpty)

  override def createBranch(repo: File, branch: Branch): F[Unit] =
    git_("checkout", "-b", branch.name)(repo).void

  override def currentBranch(repo: File): F[Branch] =
    git("rev-parse", "--abbrev-ref", Branch.head.name)(repo)
      .map(lines => Branch(lines.mkString.trim))

  override def deleteLocalBranch(repo: File, branch: Branch): F[Unit] =
    git_("branch", "--delete", "--force", branch.name)(repo).void

  override def deleteRemoteBranch(repo: File, branch: Branch): F[Unit] =
    git_("push", "origin", "--delete", branch.name)(repo).void

  override def discardChanges(repo: File): F[Unit] =
    git_("checkout", "--", ".")(repo).void

  override def findFilesContaining(repo: File, string: String): F[List[String]] =
    git("grep", "-I", "--fixed-strings", "--files-with-matches", string)(repo)
      .handleError(_ => List.empty[String])
      .map(_.filter(_.nonEmpty))

  override def hasConflicts(repo: File, branch: Branch, base: Branch): F[Boolean] = {
    val tryMerge = git_("merge", "--no-commit", "--no-ff", branch.name)(repo)
    val abortMerge = git_("merge", "--abort")(repo).attempt.void

    returnToCurrentBranch(repo) {
      checkoutBranch(repo, base) >> F.guarantee(tryMerge, abortMerge).attempt.map(_.isLeft)
    }
  }