Skip to content

Commit c0b063a

Browse files
committed
Remove some noise in GitAlg
1 parent 5b59e61 commit c0b063a

File tree

1 file changed

+33
-32
lines changed
  • modules/core/src/main/scala/org/scalasteward/core/git

1 file changed

+33
-32
lines changed

modules/core/src/main/scala/org/scalasteward/core/git/GitAlg.scala

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ trait GitAlg[F[_]] {
7171
}
7272

7373
object GitAlg {
74-
7574
def create[F[_]](implicit
7675
config: Config,
7776
fileAlg: FileAlg[F],
@@ -80,25 +79,22 @@ object GitAlg {
8079
F: BracketThrowable[F]
8180
): GitAlg[F] =
8281
new GitAlg[F] {
83-
private val sign: String =
84-
if (config.signCommits) "--gpg-sign" else "--no-gpg-sign"
85-
8682
override def branchAuthors(repo: Repo, branch: Branch, base: Branch): F[List[String]] =
8783
workspaceAlg.repoDir(repo).flatMap { repoDir =>
88-
exec(Nel.of("log", "--pretty=format:'%an'", dotdot(base, branch)), repoDir)
84+
git("log", "--pretty=format:'%an'", dotdot(base, branch))(repoDir)
8985
}
9086

9187
override def checkoutBranch(repo: Repo, branch: Branch): F[Unit] =
9288
for {
9389
repoDir <- workspaceAlg.repoDir(repo)
94-
_ <- exec(Nel.of("checkout", branch.name), repoDir)
90+
_ <- git("checkout", branch.name)(repoDir)
9591
} yield ()
9692

9793
override def clone(repo: Repo, url: Uri): F[Unit] =
9894
for {
9995
rootDir <- workspaceAlg.rootDir
10096
repoDir <- workspaceAlg.repoDir(repo)
101-
_ <- exec(Nel.of("clone", "--recursive", url.toString, repoDir.pathAsString), rootDir)
97+
_ <- git("clone", "--recursive", url.toString, repoDir.pathAsString)(rootDir)
10298
} yield ()
10399

104100
override def cloneExists(repo: Repo): F[Boolean] =
@@ -110,38 +106,38 @@ object GitAlg {
110106
override def commitAll(repo: Repo, message: String): F[Commit] =
111107
for {
112108
repoDir <- workspaceAlg.repoDir(repo)
113-
_ <- exec(Nel.of("commit", "--all", sign, "-m", message), repoDir)
109+
_ <- git("commit", "--all", sign, "-m", message)(repoDir)
114110
} yield Commit()
115111

116112
override def containsChanges(repo: Repo): F[Boolean] =
117113
workspaceAlg.repoDir(repo).flatMap { repoDir =>
118-
val args = Nel.of("status", "--porcelain", "--untracked-files=no", "--ignore-submodules")
119-
exec(args, repoDir).map(_.nonEmpty)
114+
val args = List("status", "--porcelain", "--untracked-files=no", "--ignore-submodules")
115+
git(args: _*)(repoDir).map(_.nonEmpty)
120116
}
121117

122118
override def createBranch(repo: Repo, branch: Branch): F[Unit] =
123119
for {
124120
repoDir <- workspaceAlg.repoDir(repo)
125-
_ <- exec(Nel.of("checkout", "-b", branch.name), repoDir)
121+
_ <- git("checkout", "-b", branch.name)(repoDir)
126122
} yield ()
127123

128124
override def currentBranch(repo: Repo): F[Branch] =
129125
for {
130126
repoDir <- workspaceAlg.repoDir(repo)
131-
lines <- exec(Nel.of("rev-parse", "--abbrev-ref", Branch.head.name), repoDir)
127+
lines <- git("rev-parse", "--abbrev-ref", Branch.head.name)(repoDir)
132128
} yield Branch(lines.mkString.trim)
133129

134130
override def findFilesContaining(repo: Repo, string: String): F[List[String]] =
135131
for {
136132
repoDir <- workspaceAlg.repoDir(repo)
137-
args = Nel.of("grep", "-I", "--fixed-strings", "--files-with-matches", string)
138-
lines <- exec(args, repoDir).handleError(_ => List.empty[String])
133+
args = List("grep", "-I", "--fixed-strings", "--files-with-matches", string)
134+
lines <- git(args: _*)(repoDir).handleError(_ => List.empty)
139135
} yield lines.filter(_.nonEmpty)
140136

141137
override def hasConflicts(repo: Repo, branch: Branch, base: Branch): F[Boolean] =
142138
workspaceAlg.repoDir(repo).flatMap { repoDir =>
143-
val tryMerge = exec(Nel.of("merge", "--no-commit", "--no-ff", branch.name), repoDir)
144-
val abortMerge = exec(Nel.of("merge", "--abort"), repoDir).void
139+
val tryMerge = git("merge", "--no-commit", "--no-ff", branch.name)(repoDir)
140+
val abortMerge = git("merge", "--abort")(repoDir).void
145141

146142
returnToCurrentBranch(repo) {
147143
checkoutBranch(repo, base) >> F.guarantee(tryMerge)(abortMerge).attempt.map(_.isLeft)
@@ -150,39 +146,39 @@ object GitAlg {
150146

151147
override def isMerged(repo: Repo, branch: Branch, base: Branch): F[Boolean] =
152148
workspaceAlg.repoDir(repo).flatMap { repoDir =>
153-
exec(Nel.of("log", "--pretty=format:'%h'", dotdot(base, branch)), repoDir).map(_.isEmpty)
149+
git("log", "--pretty=format:'%h'", dotdot(base, branch))(repoDir).map(_.isEmpty)
154150
}
155151

156152
override def latestSha1(repo: Repo, branch: Branch): F[Sha1] =
157153
for {
158154
repoDir <- workspaceAlg.repoDir(repo)
159-
lines <- exec(Nel.of("rev-parse", "--verify", branch.name), repoDir)
155+
lines <- git("rev-parse", "--verify", branch.name)(repoDir)
160156
sha1 <- F.fromEither(Sha1.from(lines.mkString("").trim))
161157
} yield sha1
162158

163159
override def mergeTheirs(repo: Repo, branch: Branch): F[Option[Commit]] =
164160
for {
165161
before <- latestSha1(repo, Branch.head)
166162
repoDir <- workspaceAlg.repoDir(repo)
167-
_ <- exec(Nel.of("merge", "--strategy-option=theirs", sign, branch.name), repoDir)
163+
_ <- git("merge", "--strategy-option=theirs", sign, branch.name)(repoDir).void
168164
.handleErrorWith { throwable =>
169165
// Resolve CONFLICT (modify/delete) by deleting unmerged files:
170166
for {
171-
unmergedFiles <- exec(Nel.of("diff", "--name-only", "--diff-filter=U"), repoDir)
167+
unmergedFiles <- git("diff", "--name-only", "--diff-filter=U")(repoDir)
172168
_ <- Nel.fromList(unmergedFiles.filter(_.nonEmpty)) match {
173-
case Some(files) => files.traverse(file => exec(Nel.of("rm", file), repoDir))
169+
case Some(files) => files.traverse(file => git("rm", file)(repoDir))
174170
case None => F.raiseError(throwable)
175171
}
176-
_ <- exec(Nel.of("commit", "--all", "--no-edit", sign), repoDir)
177-
} yield List.empty
172+
_ <- git("commit", "--all", "--no-edit", sign)(repoDir)
173+
} yield ()
178174
}
179175
after <- latestSha1(repo, Branch.head)
180176
} yield Option.when(before =!= after)(Commit())
181177

182178
override def push(repo: Repo, branch: Branch): F[Unit] =
183179
for {
184180
repoDir <- workspaceAlg.repoDir(repo)
185-
_ <- exec(Nel.of("push", "--force", "--set-upstream", "origin", branch.name), repoDir)
181+
_ <- git("push", "--force", "--set-upstream", "origin", branch.name)(repoDir)
186182
} yield ()
187183

188184
override def removeClone(repo: Repo): F[Unit] =
@@ -191,8 +187,8 @@ object GitAlg {
191187
override def setAuthor(repo: Repo, author: Author): F[Unit] =
192188
for {
193189
repoDir <- workspaceAlg.repoDir(repo)
194-
_ <- exec(Nel.of("config", "user.email", author.email), repoDir)
195-
_ <- exec(Nel.of("config", "user.name", author.name), repoDir)
190+
_ <- git("config", "user.email", author.email)(repoDir)
191+
_ <- git("config", "user.name", author.name)(repoDir)
196192
} yield ()
197193

198194
override def syncFork(repo: Repo, upstreamUrl: Uri, defaultBranch: Branch): F[Unit] =
@@ -201,14 +197,19 @@ object GitAlg {
201197
remote = "upstream"
202198
branch = defaultBranch.name
203199
remoteBranch = s"$remote/$branch"
204-
_ <- exec(Nel.of("remote", "add", remote, upstreamUrl.toString), repoDir)
205-
_ <- exec(Nel.of("fetch", "--tags", remote, branch), repoDir)
206-
_ <- exec(Nel.of("checkout", "-B", branch, "--track", remoteBranch), repoDir)
207-
_ <- exec(Nel.of("merge", remoteBranch), repoDir)
200+
_ <- git("remote", "add", remote, upstreamUrl.toString)(repoDir)
201+
_ <- git("fetch", "--tags", remote, branch)(repoDir)
202+
_ <- git("checkout", "-B", branch, "--track", remoteBranch)(repoDir)
203+
_ <- git("merge", remoteBranch)(repoDir)
208204
_ <- push(repo, defaultBranch)
209205
} yield ()
210206

211-
private def exec(command: Nel[String], cwd: File): F[List[String]] =
212-
processAlg.exec("git" :: command, cwd, "GIT_ASKPASS" -> config.gitAskPass.pathAsString)
207+
private def git(args: String*)(cwd: File): F[List[String]] = {
208+
val extraEnv = "GIT_ASKPASS" -> config.gitAskPass.pathAsString
209+
processAlg.exec(Nel.of("git", args: _*), cwd, extraEnv)
210+
}
211+
212+
private val sign: String =
213+
if (config.signCommits) "--gpg-sign" else "--no-gpg-sign"
213214
}
214215
}

0 commit comments

Comments
 (0)