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

coursier.LocalRepositories.scala Maven / Gradle / Ivy

The newest version!
package coursier

import java.io.File

import coursier.ivy.IvyRepository

// not sure this should live in the coursier.cache namespace…

object LocalRepositories {

  private lazy val ivy2HomeUri = {

    val path =
      sys.props.get("coursier.ivy.home")
        .orElse(sys.props.get("ivy.home"))
        .getOrElse(sys.props("user.home") + "/.ivy2/")

    // a bit touchy on Windows... - don't try to manually write down the URI with s"file://..."
    val str = new File(path).toURI.toString
    if (str.endsWith("/"))
      str
    else
      str + "/"
  }

  lazy val ivy2Local = IvyRepository.fromPattern(
    (ivy2HomeUri + "local/") +: coursier.ivy.Pattern.default,
    dropInfoAttributes = true
  )

  /**
    * These repositories aren't guaranteed to always work fine with coursier (they sometimes have only the
    * metadata of some dependencies, and coursier isn't fine with that - coursier requires
    * both the metadata and the JARs to be in the same repo)
    * see https://github.com/coursier/coursier/pull/868#issuecomment-398779799
    */
  object Dangerous {

    lazy val maven2Local = {

      // TODO Add a small unit test for that repo…

      // a bit touchy on Windows... - don't try to manually write down the URI with s"file://..."
      val str = new File(sys.props("user.home")).toURI.toString
      val homeUri =
        if (str.endsWith("/"))
          str
        else
          str + "/"

      MavenRepository(homeUri + ".m2/repository")
    }

    lazy val ivy2Cache = IvyRepository.parse(
      ivy2HomeUri + "cache/" +
        "(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[organisation]/[module]/[type]s/[artifact]-[revision](-[classifier]).[ext]",
      metadataPatternOpt = Some(
        ivy2HomeUri + "cache/" +
          "(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[organisation]/[module]/[type]-[revision](-[classifier]).[ext]"
      ),
      withChecksums = false,
      withSignatures = false,
      dropInfoAttributes = true
    ).right.getOrElse(
      throw new Exception("Cannot happen")
    )
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy