From 2e99fde9d21add218d535dd7778375c4dc48a144 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sat, 9 Jul 2011 16:54:41 -0400 Subject: [PATCH] overrideConfigs method for easier configuration substitution ref #42 --- main/Defaults.scala | 9 +++++++++ main/Project.scala | 1 + 2 files changed, 10 insertions(+) diff --git a/main/Defaults.scala b/main/Defaults.scala index 5d7625ce8..aaa26e35d 100644 --- a/main/Defaults.scala +++ b/main/Defaults.scala @@ -1001,4 +1001,13 @@ trait BuildCommon def classpath: Classpath = Attributed blankSeq s } def toError(o: Option[String]): Unit = o foreach error + + def overrideConfigs(cs: Configuration*)(configurations: Seq[Configuration]): Seq[Configuration] = + { + val existingName = configurations.map(_.name).toSet + val newByName = cs.map(c => (c.name, c)).toMap + val overridden = configurations map { conf => newByName.getOrElse(conf.name, conf) } + val newConfigs = cs filter { c => !existingName(c.name) } + overridden ++ newConfigs + } } \ No newline at end of file diff --git a/main/Project.scala b/main/Project.scala index b3d0f69a6..1be09a931 100644 --- a/main/Project.scala +++ b/main/Project.scala @@ -52,6 +52,7 @@ sealed trait Project extends ProjectDefinition[ProjectReference] apply(id, base, aggregate = resolveRefs(aggregate), dependencies = resolveDeps(dependencies), delegates = resolveRefs(delegates), settings, configurations) } + def overrideConfigs(cs: Configuration*): Project = copy(configurations = Defaults.overrideConfigs(cs : _*)(configurations)) def dependsOn(deps: ClasspathDep[ProjectReference]*): Project = copy(dependencies = dependencies ++ deps) def delegateTo(from: ProjectReference*): Project = copy(delegates = delegates ++ from) def aggregate(refs: ProjectReference*): Project = copy(aggregate = (aggregate: Seq[ProjectReference]) ++ refs)