From 2c5a2f0f965f1861de8c6abf8d0d3bc190991219 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sat, 17 Mar 2012 19:31:04 -0400 Subject: [PATCH] enable sbt-plugin auto-configuration when using 'reload plugins' --- main/Load.scala | 5 +++-- main/Main.scala | 2 +- main/Project.scala | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/main/Load.scala b/main/Load.scala index 9539bceea..6f4fb83b3 100755 --- a/main/Load.scala +++ b/main/Load.scala @@ -27,13 +27,14 @@ object Load import Locate.DefinesClass // note that there is State passed in but not pulled out - def defaultLoad(state: State, baseDirectory: File, log: Logger): (() => Eval, BuildStructure) = + def defaultLoad(state: State, baseDirectory: File, log: Logger, isPlugin: Boolean = false): (() => Eval, BuildStructure) = { val globalBase = getGlobalBase(state) val base = baseDirectory.getCanonicalFile val definesClass = FileValueCache(Locate.definesClass _) val rawConfig = defaultPreGlobal(state, base, definesClass.get, globalBase, log) - val config = defaultWithGlobal(state, base, rawConfig, globalBase, log) + val config0 = defaultWithGlobal(state, base, rawConfig, globalBase, log) + val config = if(isPlugin) enableSbtPlugin(config0) else config0 val result = apply(base, state, config) definesClass.clear() result diff --git a/main/Main.scala b/main/Main.scala index 69afb69f9..6e4158107 100644 --- a/main/Main.scala +++ b/main/Main.scala @@ -335,7 +335,7 @@ object BuiltinCommands def loadProjectImpl = Command(LoadProjectImpl)(_ => Project.loadActionParser) { (s0, action) => val (s, base) = Project.loadAction(SessionVar.clear(s0), action) IO.createDirectory(base) - val (eval, structure) = Load.defaultLoad(s, base, s.log) + val (eval, structure) = Load.defaultLoad(s, base, s.log, Project.inPluginProject(s)) val session = Load.initialSession(structure, eval, s0) SessionSettings.checkSession(session, s) Project.setProject(session, structure, s) diff --git a/main/Project.scala b/main/Project.scala index e834d1b6a..7b319d87d 100755 --- a/main/Project.scala +++ b/main/Project.scala @@ -370,7 +370,8 @@ object Project extends Init[Scope] with ProjectExtra val loadActionParser = token(Space ~> ("plugins" ^^^ Plugins | "return" ^^^ Return)) ?? Current val ProjectReturn = AttributeKey[List[File]]("project-return", "Maintains a stack of builds visited using reload.") - def projectReturn(s: State): List[File] = s.attributes get ProjectReturn getOrElse Nil + def projectReturn(s: State): List[File] = s get ProjectReturn getOrElse Nil + def inPluginProject(s: State): Boolean = projectReturn(s).toList.length > 1 def setProjectReturn(s: State, pr: List[File]): State = s.copy(attributes = s.attributes.put( ProjectReturn, pr) ) def loadAction(s: State, action: LoadAction.Value) = action match { case Return =>