From d01f8d3c1b15b5988e775d920a8805e7eb95266f Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 01:54:58 -0400 Subject: [PATCH] Port project/extra --- .../main/scala/sbt/internal/BuildDef.scala | 2 +- sbt/src/sbt-test/project/extra/build.sbt | 43 +++++++++++++++++ .../sbt-test/project/extra/project/B.scala | 46 ------------------- 3 files changed, 44 insertions(+), 47 deletions(-) create mode 100644 sbt/src/sbt-test/project/extra/build.sbt delete mode 100644 sbt/src/sbt-test/project/extra/project/B.scala diff --git a/main/src/main/scala/sbt/internal/BuildDef.scala b/main/src/main/scala/sbt/internal/BuildDef.scala index 0e7f2370b..1825071ae 100644 --- a/main/src/main/scala/sbt/internal/BuildDef.scala +++ b/main/src/main/scala/sbt/internal/BuildDef.scala @@ -11,7 +11,7 @@ import sbt.io.Hash import sbt.internal.util.Attributed import sbt.internal.inc.ReflectUtilities -private[sbt] trait BuildDef { +trait BuildDef { def projectDefinitions(baseDirectory: File): Seq[Project] = projects def projects: Seq[Project] = ReflectUtilities.allVals[Project](this).values.toSeq // TODO: Should we grab the build core setting shere or in a plugin? diff --git a/sbt/src/sbt-test/project/extra/build.sbt b/sbt/src/sbt-test/project/extra/build.sbt new file mode 100644 index 000000000..03087c247 --- /dev/null +++ b/sbt/src/sbt-test/project/extra/build.sbt @@ -0,0 +1,43 @@ +lazy val root = (project in file(".")). + settings( + autoScalaLibrary := false, + libraryDependencies += "log4j" % "log4j" % "1.2.16", + retrieveManaged := true, + commands ++= Seq( + addExtra("add1", addExtra1), + addExtra("add2", addExtra2), + checkExtra + ) + ) + +def addExtra(name: String, f: (State, Seq[File]) => State) = + Command.command(name) { s => + f(s, (file("lib_managed") ** "*.jar").get) + } +def checkExtra = + Command.command("check") { s => + val loader = Class.forName("org.apache.log4j.Level").getClassLoader + val sbtLoader = classOf[sbt.internal.BuildDef].getClassLoader + assert(loader eq sbtLoader, "Different loader for sbt and extra: " + sbtLoader + " and " + loader) + s + } +def addExtra1(s: State, extra: Seq[File]): State = + { + val cs = s.configuration.provider.components() + val copied = cs.addToComponent("extra", extra.toArray) + if(copied) s.reload else s + } +def addExtra2(s: State, extra: Seq[File]): State = + { + val reload = State.defaultReload(s) + val currentID = reload.app + val currentExtra = currentID.classpathExtra + val newExtra = (currentExtra ++ extra).distinct + if(newExtra.length == currentExtra.length) + s + else + { + val newID = ApplicationID(currentID).copy(extra = extra) + s.setResult(Some(reload.copy(app = newID))) + } + } diff --git a/sbt/src/sbt-test/project/extra/project/B.scala b/sbt/src/sbt-test/project/extra/project/B.scala deleted file mode 100644 index 7cbf9495d..000000000 --- a/sbt/src/sbt-test/project/extra/project/B.scala +++ /dev/null @@ -1,46 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build -{ - lazy val root = Project("root", file(".")) settings( - autoScalaLibrary := false, - libraryDependencies += "log4j" % "log4j" % "1.2.16", - retrieveManaged := true, - commands ++= Seq( - addExtra("add1", addExtra1), - addExtra("add2", addExtra2), - checkExtra - ) - ) - def addExtra(name: String, f: (State, Seq[File]) => State) = Command.command(name) { s => - f(s, (file("lib_managed") ** "*.jar").get) - } - def checkExtra = Command.command("check") { s => - val loader = Class.forName("org.apache.log4j.Level").getClassLoader - val sbtLoader = classOf[sbt.Build].getClassLoader - assert(loader eq sbtLoader, "Different loader for sbt and extra: " + sbtLoader + " and " + loader) - s - } - def addExtra1(s: State, extra: Seq[File]): State = - { - val cs = s.configuration.provider.components() - val copied = cs.addToComponent("extra", extra.toArray) - if(copied) s.reload else s - } - def addExtra2(s: State, extra: Seq[File]): State = - { - val reload = State.defaultReload(s) - val currentID = reload.app - val currentExtra = currentID.classpathExtra - val newExtra = (currentExtra ++ extra).distinct - if(newExtra.length == currentExtra.length) - s - else - { - val newID = ApplicationID(currentID).copy(extra = extra) - s.setResult(Some(reload.copy(app = newID))) - } - } -} \ No newline at end of file