All Downloads are FREE. Search and download functionalities are using the official Maven repository.

er.lm-coursier-shaded_2.13.2.1.5.source-code.ArtifactsRun.scala Maven / Gradle / Ivy

The newest version!
package lmcoursier.internal

import coursier.Artifacts
import coursier.cache.CacheLogger
import coursier.cache.loggers.{FallbackRefreshDisplay, ProgressBarRefreshDisplay, RefreshLogger}
import coursier.core.Type
import sbt.util.Logger

// private[lmcoursier]
object ArtifactsRun {

  def apply(
    params: ArtifactsParams,
    verbosityLevel: Int,
    log: Logger
  ): Either[coursier.error.FetchError, Artifacts.Result] = {

    val printOptionalMessage = verbosityLevel >= 0 && verbosityLevel <= 1

    val artifactInitialMessage =
      if (verbosityLevel >= 0)
        s"Fetching artifacts of ${params.projectName}" +
          (if (params.sbtClassifiers) " (sbt classifiers)" else "")
      else
        ""

    val coursierLogger = params.loggerOpt.getOrElse {
      RefreshLogger.create(
        if (RefreshLogger.defaultFallbackMode)
          new FallbackRefreshDisplay()
        else
          ProgressBarRefreshDisplay.create(
            if (printOptionalMessage) log.info(artifactInitialMessage),
            if (printOptionalMessage || verbosityLevel >= 2)
              log.info(
                s"Fetched artifacts of ${params.projectName}" +
                  (if (params.sbtClassifiers) " (sbt classifiers)" else "")
              )
          )
      )
    }

    Lock.maybeSynchronized(needsLock = params.loggerOpt.nonEmpty || !RefreshLogger.defaultFallbackMode){
      result(params, coursierLogger)
    }
  }

  private def result(
    params: ArtifactsParams,
    coursierLogger: CacheLogger
  ): Either[coursier.error.FetchError, Artifacts.Result] =
    coursier.Artifacts()
      .withResolutions(params.resolutions)
      .withArtifactTypes(Set(Type.all))
      .withClassifiers(params.classifiers.getOrElse(Nil).toSet)
      .withClasspathOrder(params.classpathOrder)
      .addExtraArtifacts { l =>
        if (params.includeSignatures)
          l.flatMap(_._3.extra.get("sig").toSeq)
        else
          Nil
      }
      .addTransformArtifacts { artifacts =>
        if (params.missingOk)
          artifacts.map {
            case (dependency, publication, artifact) =>
              (dependency, publication, artifact.withOptional(true))
          }
        else
          artifacts
      }
      .withCache(params.cache.withLogger(coursierLogger))
      .eitherResult()

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy