Skip to content

Commit 0d83ea8

Browse files
committed
Begin propagating firstSeen
It looks like we probably want to update UpdatesConfig.scala to add a new method `isTooNew: Update.ForArtifactId => FilterResult` which rules out proposed updates that use too new a version (according to the user’s config). To do that, we reckon we’ll need Update.ForArtifactId to list versions with their firstSeen information, i.e. update the contained type from Version to VersionWithFirstSeen. This commit begins making that change (and so will not compile).
1 parent 9d16cf4 commit 0d83ea8

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

modules/core/src/main/scala/org/scalasteward/core/coursier/VersionsCache.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,13 @@ final class VersionsCache[F[_]](
3636
parallel: Parallel[F],
3737
F: MonadThrow[F]
3838
) {
39-
def getVersions(dependency: Scope.Dependency, maxAge: Option[FiniteDuration]): F[List[Version]] =
39+
def getVersions(
40+
dependency: Scope.Dependency,
41+
maxAge: Option[FiniteDuration]
42+
): F[List[VersionWithFirstSeen]] =
4043
dependency.resolvers
4144
.parFlatTraverse(getVersionsImpl(dependency.value, _, maxAge.getOrElse(cacheTtl)))
42-
.map(_.map(_.version).distinct.sorted) // TODO - remove `.map(_.version)`
45+
.map(_.distinct.sortBy(_.version))
4346

4447
private def getVersionsImpl(
4548
dependency: Dependency,

modules/core/src/main/scala/org/scalasteward/core/data/Update.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import io.circe.{Decoder, Encoder}
2222
import org.scalasteward.core.repoconfig.PullRequestGroup
2323
import org.scalasteward.core.util
2424
import org.scalasteward.core.util.Nel
25+
import org.scalasteward.core.coursier.VersionsCache.VersionWithFirstSeen
2526

2627
sealed trait Update {
2728

@@ -86,7 +87,7 @@ object Update {
8687

8788
final case class ForArtifactId(
8889
crossDependency: CrossDependency,
89-
newerVersions: Nel[Version],
90+
newerVersions: Nel[VersionWithFirstSeen],
9091
newerGroupId: Option[GroupId] = None,
9192
newerArtifactId: Option[String] = None
9293
) extends Single {

modules/core/src/main/scala/org/scalasteward/core/repoconfig/UpdatePattern.scala

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import cats.syntax.all.*
2020
import io.circe.Codec
2121
import io.circe.generic.semiauto.*
2222
import org.scalasteward.core.data.{GroupId, Update, Version}
23+
import org.scalasteward.core.coursier.VersionsCache.VersionWithFirstSeen
2324

2425
final case class UpdatePattern(
2526
groupId: GroupId,
@@ -32,18 +33,22 @@ final case class UpdatePattern(
3233
object UpdatePattern {
3334
final case class MatchResult(
3435
byArtifactId: List[UpdatePattern],
35-
filteredVersions: List[Version]
36+
filteredVersions: List[VersionWithFirstSeen]
3637
)
3738

3839
def findMatch(
3940
patterns: List[UpdatePattern],
4041
update: Update.ForArtifactId,
41-
include: Boolean
42+
include: Boolean,
43+
versionPredicate: VersionWithFirstSeen => Boolean = _ => true
4244
): MatchResult = {
4345
val byGroupId = patterns.filter(_.groupId === update.groupId)
4446
val byArtifactId = byGroupId.filter(_.artifactId.forall(_ === update.artifactId.name))
4547
val filteredVersions = update.newerVersions.filter(newVersion =>
46-
byArtifactId.exists(_.version.forall(_.matches(newVersion.value))) === include
48+
(byArtifactId.exists(_.version.forall(_.matches(newVersion.value))) && versionPredicate(
49+
newVersion
50+
))
51+
=== include
4752
)
4853
MatchResult(byArtifactId, filteredVersions)
4954
}

0 commit comments

Comments
 (0)