add ChainedResolver(name: String, resolvers: Seq[Resolver]), closes #63

This commit is contained in:
Mark Harrah 2011-06-20 15:25:23 -04:00
parent 07ba2bcaa2
commit dcd84a48ab
3 changed files with 9 additions and 7 deletions

View File

@ -6,13 +6,13 @@ package sbt
import org.apache.ivy.{core,plugins}
import core.module.id.ModuleRevisionId
import core.settings.IvySettings
import plugins.resolver.{ChainResolver, DependencyResolver, IBiblioResolver}
import plugins.resolver.{DependencyResolver, IBiblioResolver}
import plugins.resolver.{AbstractPatternsBasedResolver, AbstractSshBasedResolver, FileSystemResolver, SFTPResolver, SshResolver, URLResolver}
private object ConvertResolver
{
/** Converts the given sbt resolver into an Ivy resolver..*/
def apply(r: Resolver)(implicit settings: IvySettings) =
def apply(r: Resolver)(implicit settings: IvySettings, log: Logger) =
{
r match
{
@ -61,6 +61,7 @@ private object ConvertResolver
initializePatterns(resolver, repo.patterns)
resolver
}
case repo: ChainedResolver => IvySbt.resolverChain(repo.name, repo.resolvers, false, settings, log)
case repo: RawRepository => repo.resolver
}
}

View File

@ -68,7 +68,7 @@ final class IvySbt(val configuration: IvyConfiguration)
i.paths.ivyHome foreach is.setDefaultIvyUserDir
IvySbt.configureCache(is, i.localOnly)
IvySbt.setResolvers(is, i.resolvers, i.otherResolvers, i.localOnly, configuration.log)
IvySbt.setModuleConfigurations(is, i.moduleConfigurations)
IvySbt.setModuleConfigurations(is, i.moduleConfigurations, configuration.log)
}
is
}
@ -205,7 +205,7 @@ private object IvySbt
val mainChain = makeChain("Default", "sbt-chain", resolvers)
settings.setDefaultResolver(mainChain.getName)
}
private def resolverChain(name: String, resolvers: Seq[Resolver], localOnly: Boolean, settings: IvySettings, log: Logger): DependencyResolver =
def resolverChain(name: String, resolvers: Seq[Resolver], localOnly: Boolean, settings: IvySettings, log: Logger): DependencyResolver =
{
val newDefault = new ChainResolver {
// Technically, this should be applied to module configurations.
@ -219,7 +219,7 @@ private object IvySbt
newDefault.setCheckmodified(false)
for(sbtResolver <- resolvers) {
log.debug("\t" + sbtResolver)
newDefault.add(ConvertResolver(sbtResolver)(settings))
newDefault.add(ConvertResolver(sbtResolver)(settings, log))
}
newDefault
}
@ -231,7 +231,7 @@ private object IvySbt
import collection.JavaConversions._
artifact.getQualifiedExtraAttributes.keys.exists(_.asInstanceOf[String] startsWith "m:")
}
private def setModuleConfigurations(settings: IvySettings, moduleConfigurations: Seq[ModuleConfiguration])
private def setModuleConfigurations(settings: IvySettings, moduleConfigurations: Seq[ModuleConfiguration], log: Logger)
{
val existing = settings.getResolverNames
for(moduleConf <- moduleConfigurations)
@ -240,7 +240,7 @@ private object IvySbt
import IvyPatternHelper._
import PatternMatcher._
if(!existing.contains(resolver.name))
settings.addResolver(ConvertResolver(resolver)(settings))
settings.addResolver(ConvertResolver(resolver)(settings, log))
val attributes = javaMap(Map(MODULE_KEY -> name, ORGANISATION_KEY -> organization, REVISION_KEY -> revision))
settings.addModuleConfiguration(attributes, settings.getMatcher(EXACT_OR_REGEXP), resolver.name, null, null, null)
}

View File

@ -43,6 +43,7 @@ final class RawRepository(val resolver: DependencyResolver) extends Resolver
def name = resolver.getName
override def toString = "Raw(" + resolver.toString + ")"
}
sealed case class ChainedResolver(name: String, resolvers: Seq[Resolver]) extends Resolver
sealed case class MavenRepository(name: String, root: String) extends Resolver
{
override def toString = name + ": " + root