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

sbt.librarymanagement.ScalaArtifacts.scala Maven / Gradle / Ivy

package bleep.nosbt.librarymanagement

object ScalaArtifacts {
  final val Organization = "org.scala-lang"
  final val LibraryID = "scala-library"
  final val CompilerID = "scala-compiler"
  final val ReflectID = "scala-reflect"
  final val ActorsID = "scala-actors"
  final val ScalapID = "scalap"
  final val Artifacts = Vector(LibraryID, CompilerID, ReflectID, ActorsID, ScalapID)

  final val Scala3LibraryID = "scala3-library"
  final val Scala3CompilerID = "scala3-compiler"
  final val Scala3InterfacesID = "scala3-interfaces"
  final val TastyCoreID = "tasty-core"
  final val ScaladocID = "scaladoc"
  final val Scala3DocID = "scala3doc"
  final val Scala3TastyInspectorID = "scala3-tasty-inspector"

  private[nosbt] final val Scala3LibraryPrefix = Scala3LibraryID + "_"
  private[nosbt] final val Scala3CompilerPrefix = Scala3CompilerID + "_"
  private[nosbt] final val TastyCorePrefix = TastyCoreID + "_"
  private[nosbt] final val ScaladocPrefix = ScaladocID + "_"
  private[nosbt] final val Scala3DocPrefix = Scala3DocID + "_"
  private[nosbt] final val Scala3TastyInspectorPrefix = Scala3TastyInspectorID + "_"

  def isScala2Artifact(name: String): Boolean = {
    name == LibraryID || name == CompilerID || name == ReflectID || name == ActorsID || name == ScalapID
  }
  def isScala3Artifact(name: String): Boolean = {
    name.startsWith(Scala3LibraryPrefix) ||
    name.startsWith(Scala3CompilerPrefix) ||
    name.startsWith(TastyCorePrefix) ||
    name == Scala3InterfacesID ||
    name.startsWith(ScaladocPrefix) ||
    name.startsWith(Scala3DocPrefix) ||
    name.startsWith(Scala3TastyInspectorPrefix)
  }

  def isScala3(scalaVersion: String): Boolean = scalaVersion.startsWith("3.")

  private[nosbt] def isScala3M123(scalaVersion: String): Boolean =
    (scalaVersion == "3.0.0-M1") ||
      (scalaVersion == "3.0.0-M2") ||
      (scalaVersion == "3.0.0-M3")

  def libraryIds(version: String): Array[String] = {
    if (isScala3(version))
      Array(Scala3LibraryID, LibraryID)
    else Array(LibraryID)
  }

  def compilerId(version: String): String = {
    if (isScala3(version)) Scala3CompilerID
    else CompilerID
  }

  def libraryDependency(version: String): ModuleID = libraryDependency(Organization, version)

  def libraryDependency(org: String, version: String): ModuleID = {
    if (isScala3(version))
      ModuleID(org, Scala3LibraryID, version).withCrossVersion(CrossVersion.binary)
    else
      ModuleID(org, LibraryID, version)
  }

  private[nosbt] def docToolDependencies(
      org: String,
      version: String
  ): Seq[ModuleID] =
    if (isScala3M123(version))
      Seq(
        ModuleID(org, Scala3DocID, version)
          .withConfigurations(Some(Configurations.ScalaDocTool.name + "->default(compile)"))
          .withCrossVersion(CrossVersion.binary)
      )
    else if (isScala3(version))
      Seq(
        ModuleID(org, ScaladocID, version)
          .withConfigurations(Some(Configurations.ScalaDocTool.name + "->default(compile)"))
          .withCrossVersion(CrossVersion.binary)
      )
    else Seq.empty

  private[nosbt] def toolDependencies(
      org: String,
      version: String
  ): Seq[ModuleID] =
    if (isScala3(version))
      Seq(
        ModuleID(org, Scala3CompilerID, version)
          .withConfigurations(Some(Configurations.ScalaTool.name + "->default(compile)"))
          .withCrossVersion(CrossVersion.binary)
      )
    else
      Seq(
        scala2ToolDependency(org, CompilerID, version),
        scala2ToolDependency(org, LibraryID, version)
      )

  private[this] def scala2ToolDependency(org: String, id: String, version: String): ModuleID =
    ModuleID(org, id, version).withConfigurations(
      Some(Configurations.ScalaTool.name + "->default,optional(default)")
    )
}

object SbtArtifacts {
  val Organization = "org.scala-sbt"
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy