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(