Skip to content

Commit 73aaa85

Browse files
Ensure PR metadata is updated when updating its commits
1 parent 2e7a777 commit 73aaa85

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

modules/core/src/main/scala/org/scalasteward/core/nurture/NurtureAlg.scala

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package org.scalasteward.core.nurture
1818

1919
import cats.effect.Concurrent
20-
import cats.implicits._
20+
import cats.syntax.all._
2121
import cats.{Applicative, Id}
2222
import org.scalasteward.core.application.Config.ForgeCfg
2323
import org.scalasteward.core.coursier.CoursierAlg
@@ -99,7 +99,7 @@ final class NurtureAlg[F[_]](config: ForgeCfg)(implicit
9999
logger.info(s"PR ${pr.html_url} is closed") >>
100100
deleteRemoteBranch(data.repo, data.updateBranch).as(Ignored)
101101
case Some(pr) if !pr.state.isClosed =>
102-
logger.info(s"Found PR ${pr.html_url}") >> updatePullRequest(data)
102+
logger.info(s"Found PR ${pr.html_url}") >> updatePullRequest(data, pr.number)
103103
case _ =>
104104
applyNewUpdate(data).flatTap {
105105
case Created(newPrNumber) => closeObsoletePullRequests(data, newPrNumber)
@@ -262,14 +262,14 @@ final class NurtureAlg[F[_]](config: ForgeCfg)(implicit
262262
_ <- logger.info(s"Created PR ${pr.html_url}")
263263
} yield Created(pr.number)
264264

265-
private def updatePullRequest(data: UpdateData): F[ProcessResult] =
265+
private def updatePullRequest(data: UpdateData, number: PullRequestNumber): F[ProcessResult] =
266266
if (data.repoConfig.updatePullRequestsOrDefault =!= PullRequestUpdateStrategy.Never)
267267
gitAlg.returnToCurrentBranch(data.repo) {
268-
for {
269-
_ <- gitAlg.checkoutBranch(data.repo, data.updateBranch)
270-
update <- shouldBeUpdated(data)
271-
result <- if (update) mergeAndApplyAgain(data) else F.pure[ProcessResult](Ignored)
272-
} yield result
268+
gitAlg.checkoutBranch(data.repo, data.updateBranch) >>
269+
shouldBeUpdated(data).ifM(
270+
ifTrue = mergeAndApplyAgain(number, data),
271+
ifFalse = (Ignored: ProcessResult).pure
272+
)
273273
}
274274
else
275275
logger.info("PR updates are disabled by flag").as(Ignored)
@@ -293,7 +293,7 @@ final class NurtureAlg[F[_]](config: ForgeCfg)(implicit
293293
result.flatMap { case (update, msg) => logger.info(msg).as(update) }
294294
}
295295

296-
private def mergeAndApplyAgain(data: UpdateData): F[ProcessResult] =
296+
private def mergeAndApplyAgain(number: PullRequestNumber, data: UpdateData): F[ProcessResult] =
297297
for {
298298
_ <- logger.info(
299299
s"Merge branch ${data.baseBranch.name} into ${data.updateBranch.name} and apply again"
@@ -307,6 +307,8 @@ final class NurtureAlg[F[_]](config: ForgeCfg)(implicit
307307
editCommits = edits.flatMap(_.commits)
308308
commits = maybeRevertCommit.toList ++ maybeMergeCommit.toList ++ editCommits
309309
result <- pushCommits(data, commits)
310+
requestData <- preparePullRequest(data, edits)
311+
_ <- forgeApiAlg.updatePullRequest(number: PullRequestNumber, data.repo, requestData)
310312
} yield result
311313

312314
}

0 commit comments

Comments
 (0)