in modules/core/src/main/scala/org/scalasteward/core/coursier/VersionsCache.scala [38:62]
def getVersions(dependency: Scope.Dependency, maxAge: Option[FiniteDuration]): F[List[Version]] =
dependency.resolvers
.parFlatTraverse(getVersionsImpl(dependency.value, _, maxAge.getOrElse(cacheTtl)))
.map(_.distinct.sorted)
private def getVersionsImpl(
dependency: Dependency,
resolver: Resolver,
maxAge: FiniteDuration
): F[List[Version]] =
dateTimeAlg.currentTimestamp.flatMap { now =>
val key = Key(dependency, resolver)
store.get(key).flatMap {
case Some(value) if value.updatedAt.until(now) <= (maxAge * value.maxAgeFactor) =>
F.pure(value.versions)
case maybeValue =>
coursierAlg.getVersions(dependency, resolver).attempt.flatMap {
case Right(versions) =>
store.put(key, Value(now, versions, None)).as(versions)
case Left(throwable) =>
val versions = maybeValue.map(_.versions).getOrElse(List.empty)
store.put(key, Value(now, versions, Some(throwable.toString))).as(versions)
}
}
}