From caa655ae064db22acf89a0163e63c616201e4a6b Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sat, 4 Sep 2010 08:44:21 -0400 Subject: [PATCH] add owner name function to context --- main/SingleProject.scala | 5 +++-- tasks/standard/System.scala | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/main/SingleProject.scala b/main/SingleProject.scala index cadd1de2a..8c4ed5d13 100644 --- a/main/SingleProject.scala +++ b/main/SingleProject.scala @@ -23,7 +23,7 @@ trait SingleProject extends Tasked with PrintTask with TaskExtra with Types def act(input: Input, state: State): Option[(Task[State], Execute.NodeView[Task])] = { import Dummy._ - val context = ReflectiveContext(this) + val context = ReflectiveContext(this, (x: SingleProject) => Some("project")) // TODO: project names val dummies = new Transform.Dummies(In, State, Streams) def name(t: Task[_]): String = context.staticName(t) getOrElse std.Streams.name(t) val injected = new Transform.Injected( input, state, std.Streams(t => streamBase / name(t)) ) @@ -63,7 +63,7 @@ trait PrintTask object ReflectiveContext { import Transform.Context - def apply[Owner <: AnyRef : Manifest](context: Owner): Context[Owner] = new Context[Owner] + def apply[Owner <: AnyRef : Manifest](context: Owner, name: Owner => Option[String]): Context[Owner] = new Context[Owner] { private[sbt] lazy val tasks: Map[String, Task[_]] = ReflectUtilities.allVals[Task[_]](context).toMap private[sbt] lazy val reverseName: collection.Map[Task[_], String] = reverseMap(tasks) @@ -72,6 +72,7 @@ object ReflectiveContext def forName(s: String): Option[Task[_]] = tasks get s val staticName: Task[_] => Option[String] = reverseName.get _ + val ownerName = name val owner = (_: Task[_]) => Some(context) val subs = (o: Owner) => Nil val static = (o: Owner, s: String) => if(o eq context) tasks.get(s) else None diff --git a/tasks/standard/System.scala b/tasks/standard/System.scala index c1ba592e7..59ceb380a 100644 --- a/tasks/standard/System.scala +++ b/tasks/standard/System.scala @@ -105,6 +105,7 @@ object Transform def forName(s: String): Option[Task[_]] def staticName: Task[_] => Option[String] def owner: Task[_] => Option[Owner] + def ownerName: Owner => Option[String] def subs: Owner => Iterable[Owner] def static: (Owner, String) => Option[Task[_]] }