private def dependenciesUpdatedWithNextAndCurrentVersion()

in modules/core/src/main/scala/org/scalasteward/core/nurture/NurtureAlg.scala [189:236]


  private def dependenciesUpdatedWithNextAndCurrentVersion(
      update: Update
  ): List[(Version, Dependency)] =
    update.on(
      u => u.dependencies.map(_.copy(version = u.nextVersion)).tupleLeft(u.currentVersion).toList,
      _.updates.flatMap(dependenciesUpdatedWithNextAndCurrentVersion(_))
    )

  private[nurture] def preparePullRequest(
      data: UpdateData,
      edits: List[EditAttempt]
  ): F[NewPullRequestData] =
    for {
      _ <- F.unit
      dependenciesWithNextVersion = dependenciesUpdatedWithNextAndCurrentVersion(data.update)
      resolvers = data.repoData.cache.dependencyInfos.flatMap(_.resolvers)
      dependencyToMetadata <- dependenciesWithNextVersion
        .traverse { case (_, dependency) =>
          coursierAlg
            .getMetadata(dependency, resolvers)
            .flatMap(_.filterUrls(urlChecker.exists))
            .tupleLeft(dependency)
        }
        .map(_.toMap)
      artifactIdToUrl = dependencyToMetadata.toList.mapFilter { case (dependency, metadata) =>
        metadata.repoUrl.tupleLeft(dependency.artifactId.name)
      }.toMap
      artifactIdToUpdateInfoUrls <- dependenciesWithNextVersion.flatTraverse {
        case (currentVersion, dependency) =>
          dependencyToMetadata.get(dependency).toList.traverse { metadata =>
            updateInfoUrlFinder
              .findUpdateInfoUrls(metadata, Version.Update(currentVersion, dependency.version))
              .tupleLeft(dependency.artifactId.name)
          }
      }
      artifactIdToVersionScheme = dependencyToMetadata.toList.mapFilter {
        case (dependency, metadata) =>
          metadata.versionScheme.tupleLeft(dependency.artifactId.name)
      }.toMap
      filesWithOldVersion <-
        data.update
          .on(u => List(u.currentVersion.value), _.updates.map(_.currentVersion.value))
          .flatTraverse(gitAlg.findFilesContaining(data.repo, _))
          .map(_.distinct)
      allLabels = labelsFor(data.update, edits, filesWithOldVersion, artifactIdToVersionScheme)
      labels =
        filterLabels(allLabels, data.repoData.config.pullRequestsOrDefault.includeMatchedLabels)
    } yield NewPullRequestData.from(