diff --git a/main/Command.scala b/main/Command.scala index 19637e19d..d6c8efec3 100644 --- a/main/Command.scala +++ b/main/Command.scala @@ -81,7 +81,7 @@ trait Named } trait Member[Node <: Member[Node]] { self: Node => - def projectClosure: Seq[Node] + def projectClosure(state: State): Seq[Node] } trait Tasked { diff --git a/main/Main.scala b/main/Main.scala index 22c6e0f80..02808b2df 100644 --- a/main/Main.scala +++ b/main/Main.scala @@ -171,7 +171,7 @@ object Commands def projects = Command { case s @ State(d: Member[_]) => Apply.simple(ProjectsCommand, projectsBrief, projectsDetailed ) { (in,s) => val log = logger(s) - d.projectClosure.foreach { case n: Named => listProject(n, d eq n, log) } + d.projectClosure(s).foreach { case n: Named => listProject(n, d eq n, log); case _ => () } s }(s) } @@ -186,7 +186,7 @@ object Commands } else { - d.projectClosure.find { case n: Named => n.name == to; case _ => false } match + d.projectClosure(s).find { case n: Named => n.name == to; case _ => false } match { case Some(np) => logger(s).info("Set current project to " + to); s.copy(np)() case None => logger(s).error("Invalid project name '" + to + "' (type 'projects' to list available projects)."); s.fail @@ -243,7 +243,7 @@ object Commands val base = s.configuration.baseDirectory val p = MultiProject.load(s.configuration, ConsoleLogger() /*TODO*/)(base) val exts = MultiProject.loadExternals(p :: Nil, p.info.construct) - s.copy(project = p)().put(MultiProject.ExternalProjects, exts.updated(base, p)) + s.copy(project = p)().put(MultiProject.ExternalProjects, exts.updated(base, p)).put(MultiProject.InitialProject, p) } def handleException(e: Throwable, s: State, trace: Boolean = true): State = { diff --git a/main/MultiProject.scala b/main/MultiProject.scala index 1598facb5..592efe325 100644 --- a/main/MultiProject.scala +++ b/main/MultiProject.scala @@ -17,6 +17,7 @@ import java.io.File object MultiProject { val ExternalProjects = AttributeKey[Map[File, Project]]("external-projects") + val InitialProject = AttributeKey[Project]("initial-project") val defaultExcludes: FileFilter = (".*" - ".") || HiddenFileFilter def descendents(base: PathFinder, select: FileFilter) = base.descendentsExcept(select, defaultExcludes)