@@ -28,7 +28,6 @@ import org.scalasteward.core.application.Config
2828import org .scalasteward .core .coursier .CoursierAlg
2929import org .scalasteward .core .data .ProcessResult .{Created , Ignored , Updated }
3030import org .scalasteward .core .data ._
31- import org .scalasteward .core .edit .EditAlg
3231import org .scalasteward .core .git .{Branch , Commit , GitAlg }
3332import org .scalasteward .core .repoconfig .PullRequestUpdateStrategy
3433import org .scalasteward .core .edit .scalafix .ScalafixMigrationsFinder
@@ -40,7 +39,6 @@ import org.scalasteward.core.{git, util, vcs}
4039
4140final class NurtureAlg [F [_]](config : Config )(implicit
4241 coursierAlg : CoursierAlg [F ],
43- editAlg : EditAlg [F ],
4442 gitAlg : GitAlg [F ],
4543 logger : Logger [F ],
4644 pullRequestRepository : PullRequestRepository [F ],
@@ -50,6 +48,7 @@ final class NurtureAlg[F[_]](config: Config)(implicit
5048 vcsRepoAlg : VCSRepoAlg [F ],
5149 streamCompiler : Stream .Compiler [F , F ],
5250 urlChecker : UrlChecker [F ],
51+ applyAlg : ApplyAlg [F ],
5352 F : BracketThrow [F ],
5453 FS : Sync [F ]
5554) {
@@ -115,7 +114,7 @@ final class NurtureAlg[F[_]](config: Config)(implicit
115114 case Some (pr) =>
116115 logger.info(s " Found PR ${pr.html_url}" ) >> updatePullRequest(data, seenBranches)
117116 case None =>
118- applyNewUpdate(data, seenBranches)
117+ applyAlg. applyNewUpdate(data, seenBranches, pushCommits, createPullRequest )
119118 }
120119 _ <- pullRequests.headOption.traverse_ { pr =>
121120 pullRequestRepository.createOrUpdate(
@@ -159,22 +158,6 @@ final class NurtureAlg[F[_]](config: Config)(implicit
159158 gitAlg.removeBranch(repo, branch)
160159 }
161160
162- def applyNewUpdate (data : UpdateData , seenBranches : List [Branch ]): F [ProcessResult ] =
163- gitAlg.returnToCurrentBranch(data.repo) {
164- val createBranch = logger.info(s " Create branch ${data.updateBranch.name}" ) >>
165- gitAlg.createBranch(data.repo, data.updateBranch)
166- editAlg.applyUpdate(data.repoData, data.update, createBranch).flatMap { editCommits =>
167- if (editCommits.isEmpty) logger.warn(" No commits created" ).as(Ignored )
168- else
169- seenBranches
170- .forallM(gitAlg.diff(data.repo, _).map(_.nonEmpty))
171- .ifM(
172- pushCommits(data, editCommits) >> createPullRequest(data),
173- logger.warn(" Discovered a duplicate branch, not pushing" ).as[ProcessResult ](Ignored )
174- )
175- }
176- }
177-
178161 def pushCommits (data : UpdateData , commits : List [Commit ]): F [ProcessResult ] =
179162 if (commits.isEmpty) F .pure[ProcessResult ](Ignored )
180163 else
@@ -227,7 +210,8 @@ final class NurtureAlg[F[_]](config: Config)(implicit
227210 _ <- gitAlg.checkoutBranch(data.repo, data.updateBranch)
228211 update <- shouldBeUpdated(data)
229212 result <-
230- if (update) mergeAndApplyAgain(data, seenBranches) else F .pure[ProcessResult ](Ignored )
213+ if (update) applyAlg.mergeAndApplyAgain(data, seenBranches, pushCommits)
214+ else F .pure[ProcessResult ](Ignored )
231215 } yield result
232216 }
233217 else
@@ -253,21 +237,6 @@ final class NurtureAlg[F[_]](config: Config)(implicit
253237 result.flatMap { case (update, msg) => logger.info(msg).as(update) }
254238 }
255239
256- def mergeAndApplyAgain (data : UpdateData , seenBranches : List [Branch ]): F [ProcessResult ] =
257- for {
258- _ <- logger.info(
259- s " Merge branch ${data.baseBranch.name} into ${data.updateBranch.name} and apply again "
260- )
261- maybeMergeCommit <- gitAlg.mergeTheirs(data.repo, data.baseBranch)
262- editCommits <- editAlg.applyUpdate(data.repoData, data.update)
263- result <-
264- seenBranches
265- .forallM(gitAlg.diff(data.repo, _).map(_.nonEmpty))
266- .ifM(
267- pushCommits(data, maybeMergeCommit.toList ++ editCommits),
268- logger.warn(" Discovered a duplicate branch, not pushing" ).as[ProcessResult ](Ignored )
269- )
270- } yield result
271240}
272241
273242object NurtureAlg {
0 commit comments