From f338018bd159563ebd4783801fdb5362eda147b5 Mon Sep 17 00:00:00 2001 From: Josh Suereth Date: Tue, 4 Dec 2012 11:32:45 -0500 Subject: [PATCH] Modified SBT defualts to pull in app repositories. * If SBT launcher supports app repositories these are added by default. * IF SBT launcher does not support app repositories, previous defaults are used. --- main/Defaults.scala | 13 ++++++++++--- main/Keys.scala | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/main/Defaults.scala b/main/Defaults.scala index 2e0050902..85f1810f7 100755 --- a/main/Defaults.scala +++ b/main/Defaults.scala @@ -828,10 +828,12 @@ object Classpaths scmInfo in GlobalScope :== None, projectInfo <<= (name, description, homepage, startYear, licenses, organizationName, organizationHomepage, scmInfo) apply ModuleInfo, overrideBuildResolvers <<= appConfiguration(isOverrideRepositories), - externalResolvers <<= (externalResolvers.task.?, resolvers) { - case (Some(delegated), Seq()) => delegated - case (_, rs) => task { Resolver.withDefaultResolvers(rs) } + externalResolvers <<= (externalResolvers.task.?, resolvers, appResolvers) { + case (Some(delegated), Seq(), _) => delegated + case (_, rs, Some(ars)) => task { ars ++ rs } // TODO - Do we need to filter out duplicates? + case (_, rs, _) => task { Resolver.withDefaultResolvers(rs) } }, + appResolvers <<= appConfiguration apply appRepositories, bootResolvers <<= appConfiguration map bootRepositories, fullResolvers <<= (projectResolver,externalResolvers,sbtPlugin,sbtResolver,bootResolvers,overrideBuildResolvers) map { (proj,rs,isPlugin,sbtr, boot, overrideFlag) => boot match { @@ -1254,6 +1256,11 @@ object Classpaths try app.provider.scalaProvider.launcher.isOverrideRepositories catch { case _: NoSuchMethodError => false } + /** Loads the `appRepositories` configured for this launcher, if supported. */ + def appRepositories(app: xsbti.AppConfiguration): Option[Seq[Resolver]] = + try { Some(app.provider.scalaProvider.launcher.appRepositories.toSeq map bootRepository) } + catch { case _: NoSuchMethodError => None } + def bootRepositories(app: xsbti.AppConfiguration): Option[Seq[Resolver]] = try { Some(app.provider.scalaProvider.launcher.ivyRepositories.toSeq map bootRepository) } catch { case _: NoSuchMethodError => None } diff --git a/main/Keys.scala b/main/Keys.scala index 2dc9861f5..7a3d7a09b 100644 --- a/main/Keys.scala +++ b/main/Keys.scala @@ -276,6 +276,7 @@ object Keys val projectID = SettingKey[ModuleID]("project-id", "The dependency management descriptor for the current module.", BMinusSetting) val overrideBuildResolvers = SettingKey[Boolean]("override-build-resolvers", "Whether or not all the build resolvers should be overriden with what's defined from the launcher.", BMinusSetting) val bootResolvers = TaskKey[Option[Seq[Resolver]]]("boot-resolvers", "The resolvers used by the sbt launcher.", BMinusSetting) + val appResolvers = SettingKey[Option[Seq[Resolver]]]("app-resolvers", "The resolvers configured for this application by the sbt launcher.", BMinusSetting) val externalResolvers = TaskKey[Seq[Resolver]]("external-resolvers", "The external resolvers for automatically managed dependencies.", BMinusSetting) val resolvers = SettingKey[Seq[Resolver]]("resolvers", "The user-defined additional resolvers for automatically managed dependencies.", BMinusTask) val projectResolver = TaskKey[Resolver]("project-resolver", "Resolver that handles inter-project dependencies.", DTask)