private def filterUpdateStates()

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