def getVersions()

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)
          }
      }
    }