mirror of https://github.com/sbt/sbt.git
project navigation changes
projectClosure takes State save initial project in State
This commit is contained in:
parent
be8b63cb38
commit
7b64a8f526
|
|
@ -81,7 +81,7 @@ trait Named
|
||||||
}
|
}
|
||||||
trait Member[Node <: Member[Node]]
|
trait Member[Node <: Member[Node]]
|
||||||
{ self: Node =>
|
{ self: Node =>
|
||||||
def projectClosure: Seq[Node]
|
def projectClosure(state: State): Seq[Node]
|
||||||
}
|
}
|
||||||
trait Tasked
|
trait Tasked
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -171,7 +171,7 @@ object Commands
|
||||||
def projects = Command { case s @ State(d: Member[_]) =>
|
def projects = Command { case s @ State(d: Member[_]) =>
|
||||||
Apply.simple(ProjectsCommand, projectsBrief, projectsDetailed ) { (in,s) =>
|
Apply.simple(ProjectsCommand, projectsBrief, projectsDetailed ) { (in,s) =>
|
||||||
val log = logger(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
|
||||||
}(s)
|
}(s)
|
||||||
}
|
}
|
||||||
|
|
@ -186,7 +186,7 @@ object Commands
|
||||||
}
|
}
|
||||||
else
|
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 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
|
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 base = s.configuration.baseDirectory
|
||||||
val p = MultiProject.load(s.configuration, ConsoleLogger() /*TODO*/)(base)
|
val p = MultiProject.load(s.configuration, ConsoleLogger() /*TODO*/)(base)
|
||||||
val exts = MultiProject.loadExternals(p :: Nil, p.info.construct)
|
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 = {
|
def handleException(e: Throwable, s: State, trace: Boolean = true): State = {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import java.io.File
|
||||||
object MultiProject
|
object MultiProject
|
||||||
{
|
{
|
||||||
val ExternalProjects = AttributeKey[Map[File, Project]]("external-projects")
|
val ExternalProjects = AttributeKey[Map[File, Project]]("external-projects")
|
||||||
|
val InitialProject = AttributeKey[Project]("initial-project")
|
||||||
|
|
||||||
val defaultExcludes: FileFilter = (".*" - ".") || HiddenFileFilter
|
val defaultExcludes: FileFilter = (".*" - ".") || HiddenFileFilter
|
||||||
def descendents(base: PathFinder, select: FileFilter) = base.descendentsExcept(select, defaultExcludes)
|
def descendents(base: PathFinder, select: FileFilter) = base.descendentsExcept(select, defaultExcludes)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue