project navigation changes

projectClosure takes State
save initial project in State
This commit is contained in:
Mark Harrah 2010-09-08 14:40:24 -04:00
parent be8b63cb38
commit 7b64a8f526
3 changed files with 5 additions and 4 deletions

View File

@ -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
{

View File

@ -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 = {

View File

@ -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)