From dcd84a48ab8c778695cd40c69fc72f3a99d76aab Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Mon, 20 Jun 2011 15:25:23 -0400 Subject: [PATCH] add ChainedResolver(name: String, resolvers: Seq[Resolver]), closes #63 --- ivy/ConvertResolver.scala | 5 +++-- ivy/Ivy.scala | 10 +++++----- ivy/IvyInterface.scala | 1 + 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ivy/ConvertResolver.scala b/ivy/ConvertResolver.scala index eec6a5121..6c479a619 100644 --- a/ivy/ConvertResolver.scala +++ b/ivy/ConvertResolver.scala @@ -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 } } diff --git a/ivy/Ivy.scala b/ivy/Ivy.scala index 701b8fb1d..cf15bf44a 100644 --- a/ivy/Ivy.scala +++ b/ivy/Ivy.scala @@ -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) } diff --git a/ivy/IvyInterface.scala b/ivy/IvyInterface.scala index 3b802fc20..7998b573e 100644 --- a/ivy/IvyInterface.scala +++ b/ivy/IvyInterface.scala @@ -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