2010-09-22 04:10:21 +02:00
|
|
|
/* sbt -- Simple Build Tool
|
|
|
|
|
* Copyright 2009,2010 Mark Harrah
|
|
|
|
|
*/
|
|
|
|
|
package sbt
|
|
|
|
|
package impl
|
|
|
|
|
|
2011-11-16 09:34:16 +01:00
|
|
|
import StringUtilities.nonEmpty
|
2010-09-22 04:10:21 +02:00
|
|
|
|
|
|
|
|
trait DependencyBuilders
|
|
|
|
|
{
|
|
|
|
|
final implicit def toGroupID(groupID: String): GroupID =
|
|
|
|
|
{
|
|
|
|
|
nonEmpty(groupID, "Group ID")
|
|
|
|
|
new GroupID(groupID)
|
|
|
|
|
}
|
|
|
|
|
final implicit def toRepositoryName(name: String): RepositoryName =
|
|
|
|
|
{
|
|
|
|
|
nonEmpty(name, "Repository name")
|
|
|
|
|
new RepositoryName(name)
|
|
|
|
|
}
|
|
|
|
|
final implicit def moduleIDConfigurable(m: ModuleID): ModuleIDConfigurable =
|
|
|
|
|
{
|
|
|
|
|
require(m.configurations.isEmpty, "Configurations already specified for module " + m)
|
|
|
|
|
new ModuleIDConfigurable(m)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
final class GroupID private[sbt] (groupID: String)
|
|
|
|
|
{
|
2012-01-23 04:06:53 +01:00
|
|
|
def % (artifactID: String) = groupArtifact(artifactID, CrossVersion.Disabled)
|
|
|
|
|
def %% (artifactID: String): GroupArtifactID = groupArtifact(artifactID, CrossVersion.binary)
|
|
|
|
|
|
|
|
|
|
@deprecated(deprecationMessage, "0.12.0")
|
|
|
|
|
def %% (artifactID: String, crossVersion: String => String) = groupArtifact(artifactID, CrossVersion.binaryMapped(crossVersion))
|
|
|
|
|
@deprecated(deprecationMessage, "0.12.0")
|
|
|
|
|
def %% (artifactID: String, alternatives: (String, String)*) = groupArtifact(artifactID, CrossVersion.binaryMapped(Map(alternatives: _*) orElse { case s => s }))
|
|
|
|
|
|
|
|
|
|
private def groupArtifact(artifactID: String, cross: CrossVersion) =
|
2010-09-22 04:10:21 +02:00
|
|
|
{
|
|
|
|
|
nonEmpty(artifactID, "Artifact ID")
|
|
|
|
|
new GroupArtifactID(groupID, artifactID, cross)
|
|
|
|
|
}
|
2012-01-23 04:06:53 +01:00
|
|
|
|
|
|
|
|
private[this] def deprecationMessage = """Use the cross method on the constructed ModuleID. For example: ("a" % "b" % "1").cross(...)"""
|
2010-09-22 04:10:21 +02:00
|
|
|
}
|
2012-01-23 04:06:53 +01:00
|
|
|
final class GroupArtifactID private[sbt] (groupID: String, artifactID: String, crossVersion: CrossVersion)
|
2011-11-16 09:34:16 +01:00
|
|
|
{
|
2010-09-22 04:10:21 +02:00
|
|
|
def % (revision: String): ModuleID =
|
|
|
|
|
{
|
|
|
|
|
nonEmpty(revision, "Revision")
|
2012-01-23 04:06:53 +01:00
|
|
|
ModuleID(groupID, artifactID, revision).cross(crossVersion)
|
2010-09-22 04:10:21 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
final class ModuleIDConfigurable private[sbt] (moduleID: ModuleID)
|
|
|
|
|
{
|
2011-12-12 17:08:18 +01:00
|
|
|
def % (configuration: Configuration): ModuleID = %(configuration.name)
|
|
|
|
|
|
2010-09-22 04:10:21 +02:00
|
|
|
def % (configurations: String): ModuleID =
|
|
|
|
|
{
|
|
|
|
|
nonEmpty(configurations, "Configurations")
|
|
|
|
|
val c = configurations
|
|
|
|
|
moduleID.copy(configurations = Some(c))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
final class RepositoryName private[sbt] (name: String)
|
|
|
|
|
{
|
|
|
|
|
def at (location: String) =
|
|
|
|
|
{
|
|
|
|
|
nonEmpty(location, "Repository location")
|
|
|
|
|
new MavenRepository(name, location)
|
|
|
|
|
}
|
|
|
|
|
}
|