in modules/core/src/main/scala/org/scalasteward/core/update/PruningAlg.scala [129:159]
private def filterUpdateStates(
repo: Repo,
repoConfig: RepoConfig,
updateStates: List[UpdateState]
): F[Option[Nel[WithUpdate]]] =
for {
now <- dateTimeAlg.currentTimestamp
repoLastPrCreatedAt <- pullRequestRepository.lastPullRequestCreatedAt(repo)
lastPullRequestCreatedAtByArtifact <- pullRequestRepository
.lastPullRequestCreatedAtByArtifact(repo)
states <- updateStates.traverseFilter[F, WithUpdate] {
case s: DependencyOutdated =>
newPullRequestsAllowed(
s,
now,
repoLastPrCreatedAt,
artifactLastPrCreatedAt =
lastPullRequestCreatedAtByArtifact.get(s.update.groupId -> s.update.mainArtifactId),
repoConfig
).map(Option.when(_)(s))
case s: PullRequestOutdated => Option[WithUpdate](s).pure[F]
case _ => F.pure(None)
}
result <- Nel.fromList(states) match {
case some @ Some(states) =>
val lines = util.string.indentLines(states.map(UpdateState.show).sorted)
logger.info(s"${repo.show} is outdated:\n" + lines).as(some)
case None =>
logger.info(s"${repo.show} is up-to-date").as(None)
}
} yield result