mirror of https://github.com/sbt/sbt.git
47 lines
1.0 KiB
Scala
47 lines
1.0 KiB
Scala
/* sbt -- Simple Build Tool
|
|
* Copyright 2010 Mark Harrah
|
|
*/
|
|
package sbt
|
|
|
|
import std._
|
|
import Path._
|
|
import TaskExtra._
|
|
|
|
trait PrintTask
|
|
{
|
|
def input: Task[Input]
|
|
lazy val show = input flatMap { in =>
|
|
val m = ReflectUtilities.allVals[Task[_]](this)
|
|
val taskStrings = in.splitArgs map { name =>
|
|
m(name).merge.map {
|
|
case Seq() => "No result for " + name
|
|
case Seq( (conf, v) ) => name + ": " + v.toString
|
|
case confs => confs map { case (conf, v) => conf + ": " + v } mkString(name + ":\n\t", "\n\t", "\n")
|
|
}
|
|
}
|
|
taskStrings.join.map { _ foreach println }
|
|
}
|
|
}
|
|
|
|
trait LastOutput
|
|
{
|
|
def input: Task[Input]
|
|
def streams: Task[TaskStreams]
|
|
lazy val last = (streams, input) flatMap { (s: TaskStreams, i: Input) =>
|
|
val tasks = ReflectUtilities.allVals[Task[_]](this)
|
|
(s.readText( tasks(i.arguments) , update = false ) map { reader =>
|
|
val out = s.text()
|
|
def readL()
|
|
{
|
|
val line = reader.readLine()
|
|
if(line ne null) {
|
|
readL()
|
|
out.println(line)
|
|
println(line)
|
|
}
|
|
}
|
|
readL()
|
|
}).merge
|
|
}
|
|
}
|