From c0f36778440f5ea2b1155adbdac3d7a23ba9594d Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sat, 12 Mar 2011 10:28:53 -0500 Subject: [PATCH] more consistent configuration of the Ivy user directory --- ivy/ConvertResolver.scala | 11 ++++++----- ivy/Ivy.scala | 8 ++++---- ivy/IvyCache.scala | 2 +- ivy/IvyInterface.scala | 17 ++++++++--------- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/ivy/ConvertResolver.scala b/ivy/ConvertResolver.scala index cd4d1a2a0..eec6a5121 100644 --- a/ivy/ConvertResolver.scala +++ b/ivy/ConvertResolver.scala @@ -5,13 +5,14 @@ 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.{AbstractPatternsBasedResolver, AbstractSshBasedResolver, FileSystemResolver, SFTPResolver, SshResolver, URLResolver} private object ConvertResolver { /** Converts the given sbt resolver into an Ivy resolver..*/ - def apply(r: Resolver) = + def apply(r: Resolver)(implicit settings: IvySettings) = { r match { @@ -69,7 +70,7 @@ private object ConvertResolver resolver.setM2compatible(true) resolver.setRoot(root) } - private def initializeSSHResolver(resolver: AbstractSshBasedResolver, repo: SshBasedRepository) + private def initializeSSHResolver(resolver: AbstractSshBasedResolver, repo: SshBasedRepository)(implicit settings: IvySettings) { resolver.setName(repo.name) resolver.setPassfile(null) @@ -93,10 +94,10 @@ private object ConvertResolver setUser(user) } } - private def initializePatterns(resolver: AbstractPatternsBasedResolver, patterns: Patterns) + private def initializePatterns(resolver: AbstractPatternsBasedResolver, patterns: Patterns)(implicit settings: IvySettings) { resolver.setM2compatible(patterns.isMavenCompatible) - patterns.ivyPatterns.foreach(resolver.addIvyPattern) - patterns.artifactPatterns.foreach(resolver.addArtifactPattern) + patterns.ivyPatterns.foreach(p => resolver.addIvyPattern(settings substitute p)) + patterns.artifactPatterns.foreach(p => resolver.addArtifactPattern(settings substitute p)) } } diff --git a/ivy/Ivy.scala b/ivy/Ivy.scala index c9922f9ca..e04e486bd 100644 --- a/ivy/Ivy.scala +++ b/ivy/Ivy.scala @@ -181,7 +181,7 @@ private object IvySbt { def makeChain(label: String, name: String, rs: Seq[Resolver]) = { log.debug(label + " repositories:") - val chain = resolverChain(name, rs, localOnly, log) + val chain = resolverChain(name, rs, localOnly, settings, log) settings.addResolver(chain) chain } @@ -189,7 +189,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, log: Logger): ChainResolver = + private def resolverChain(name: String, resolvers: Seq[Resolver], localOnly: Boolean, settings: IvySettings, log: Logger): ChainResolver = { val newDefault = new ChainResolver newDefault.setName(name) @@ -197,7 +197,7 @@ private object IvySbt newDefault.setCheckmodified(false) for(sbtResolver <- resolvers) { log.debug("\t" + sbtResolver) - newDefault.add(ConvertResolver(sbtResolver)) + newDefault.add(ConvertResolver(sbtResolver)(settings)) } newDefault } @@ -210,7 +210,7 @@ private object IvySbt import IvyPatternHelper._ import PatternMatcher._ if(!existing.contains(resolver.name)) - settings.addResolver(ConvertResolver(resolver)) + settings.addResolver(ConvertResolver(resolver)(settings)) 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/IvyCache.scala b/ivy/IvyCache.scala index 072be22a0..9724e1009 100644 --- a/ivy/IvyCache.scala +++ b/ivy/IvyCache.scala @@ -84,7 +84,7 @@ object IvyCache /** A minimal Ivy setup with only a local resolver and the current directory as the base directory.*/ private def basicLocalIvy(lock: Option[xsbti.GlobalLock], log: Logger) = { - val local = Resolver.defaultLocal(None) + val local = Resolver.defaultLocal val paths = new IvyPaths(new File("."), None) val conf = new InlineIvyConfiguration(paths, Seq(local), Nil, Nil, false, lock, log) (new IvySbt(conf), local) diff --git a/ivy/IvyInterface.scala b/ivy/IvyInterface.scala index b6f4909e0..3f25ef617 100644 --- a/ivy/IvyInterface.scala +++ b/ivy/IvyInterface.scala @@ -174,7 +174,7 @@ object Resolver * If `scalaTools` is true, add the Scala Tools releases repository. * If `mavenCentral` is true, add the Maven Central repository. */ def withDefaultResolvers(userResolvers: Seq[Resolver], mavenCentral: Boolean, scalaTools: Boolean): Seq[Resolver] = - Seq(Resolver.defaultLocal(None)) ++ + Seq(Resolver.defaultLocal) ++ userResolvers ++ single(DefaultMavenRepository, mavenCentral)++ single(ScalaToolsReleases, scalaTools) @@ -270,14 +270,13 @@ object Resolver def mavenStyleBasePattern = "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" def localBasePattern = "[organisation]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]" - def userRoot = System.getProperty("user.home") - def userMavenRoot = userRoot + "/.m2/repository/" - def userIvyRoot = userRoot + "/.ivy2/" - private def userIvyRootFile = new File(userIvyRoot) - - def defaultLocal(ivyHome: Option[File]) = defaultUserFileRepository(ivyHome, "local") - def defaultShared(ivyHome: Option[File]) = defaultUserFileRepository(ivyHome, "shared") - def defaultUserFileRepository(ivyHome: Option[File], id: String) = file(id, new File(ivyHome.getOrElse(userIvyRootFile), id))(defaultIvyPatterns) + def defaultLocal = defaultUserFileRepository("local") + def defaultShared = defaultUserFileRepository("shared") + def defaultUserFileRepository(id: String) = + { + val pList = ("${ivy.home}/" + id + "/" + localBasePattern) :: Nil + FileRepository(id, defaultFileConfiguration, Patterns(pList, pList, false)) + } def defaultIvyPatterns = { val pList = List(localBasePattern)