2009-08-16 20:29:08 +02:00
|
|
|
/* sbt -- Simple Build Tool
|
|
|
|
|
* Copyright 2008, 2009 Mark Harrah
|
|
|
|
|
*/
|
|
|
|
|
package xsbt
|
|
|
|
|
|
|
|
|
|
import java.io.File
|
|
|
|
|
import scala.xml.NodeSeq
|
|
|
|
|
|
|
|
|
|
final class IvyPaths(val baseDirectory: File, val cacheDirectory: Option[File]) extends NotNull
|
|
|
|
|
final class IvyConfiguration(val paths: IvyPaths, val resolvers: Seq[Resolver], val log: IvyLogger) extends NotNull
|
|
|
|
|
|
2009-09-09 05:13:30 +02:00
|
|
|
sealed trait ModuleConfiguration extends NotNull
|
2009-08-16 20:29:08 +02:00
|
|
|
{
|
2009-09-09 05:13:30 +02:00
|
|
|
def validate: Boolean
|
|
|
|
|
def ivyScala: Option[IvyScala]
|
2009-08-16 20:29:08 +02:00
|
|
|
}
|
2009-09-09 05:13:30 +02:00
|
|
|
final class IvyFileConfiguration(val file: File, val ivyScala: Option[IvyScala], val validate: Boolean) extends ModuleConfiguration
|
|
|
|
|
final class PomConfiguration(val file: File, val ivyScala: Option[IvyScala], val validate: Boolean) extends ModuleConfiguration
|
|
|
|
|
final class InlineConfiguration(val module: ModuleID, val dependencies: Iterable[ModuleID], val ivyXML: NodeSeq,
|
|
|
|
|
val configurations: Iterable[Configuration], val defaultConfiguration: Option[Configuration], val ivyScala: Option[IvyScala],
|
|
|
|
|
val artifacts: Iterable[Artifact], val validate: Boolean) extends ModuleConfiguration
|
|
|
|
|
final class EmptyConfiguration(val module: ModuleID, val ivyScala: Option[IvyScala], val validate: Boolean) extends ModuleConfiguration
|
|
|
|
|
object InlineConfiguration
|
2009-08-16 20:29:08 +02:00
|
|
|
{
|
2009-08-18 06:51:08 +02:00
|
|
|
def apply(module: ModuleID, dependencies: Iterable[ModuleID], artifacts: Iterable[Artifact]) =
|
2009-09-09 05:13:30 +02:00
|
|
|
new InlineConfiguration(module, dependencies, NodeSeq.Empty, Nil, None, None, artifacts, false)
|
2009-08-16 20:29:08 +02:00
|
|
|
def configurations(explicitConfigurations: Iterable[Configuration], defaultConfiguration: Option[Configuration]) =
|
|
|
|
|
if(explicitConfigurations.isEmpty)
|
|
|
|
|
{
|
|
|
|
|
defaultConfiguration match
|
|
|
|
|
{
|
|
|
|
|
case Some(Configurations.DefaultIvyConfiguration) => Configurations.Default :: Nil
|
|
|
|
|
case Some(Configurations.DefaultMavenConfiguration) => Configurations.defaultMavenConfigurations
|
|
|
|
|
case _ => Nil
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
explicitConfigurations
|
2009-09-09 05:13:30 +02:00
|
|
|
}
|
|
|
|
|
object ModuleConfiguration
|
|
|
|
|
{
|
|
|
|
|
def apply(ivyScala: Option[IvyScala], validate: Boolean, module: => ModuleID)(baseDirectory: File, log: IvyLogger) =
|
|
|
|
|
{
|
|
|
|
|
log.debug("Autodetecting dependencies.")
|
|
|
|
|
val defaultPOMFile = IvySbt.defaultPOM(baseDirectory)
|
|
|
|
|
if(defaultPOMFile.canRead)
|
|
|
|
|
new PomConfiguration(defaultPOMFile, ivyScala, validate)
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
val defaultIvy = IvySbt.defaultIvyFile(baseDirectory)
|
|
|
|
|
if(defaultIvy.canRead)
|
|
|
|
|
new IvyFileConfiguration(defaultIvy, ivyScala, validate)
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
log.warn("No dependency configuration found, using defaults.")
|
|
|
|
|
new EmptyConfiguration(module, ivyScala, validate)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2009-08-16 20:29:08 +02:00
|
|
|
}
|