rm dead-end standard tasks

This commit is contained in:
Mark Harrah 2010-08-10 08:45:36 -04:00
parent 39839f2c16
commit 371a66bc3f
3 changed files with 0 additions and 139 deletions

View File

@ -1,59 +0,0 @@
package xsbt
import java.io.File
import scala.reflect.Manifest
import Task._
object SyncDirs
{
def sources(inputDirectory: Task[File], outputDirectory: Task[File]) =
{
import Paths._
(inputDirectory, outputDirectory) map { (in, out) =>
FileUtilities.assertDirectories(in, out)
(in ***) x FileMapper.rebase(in, out)
}
}
def apply(cacheDirectory: File)(inputDirectory: Task[File], outputDirectory: Task[File]): Sync =
Sync(cacheDirectory)(sources(inputDirectory, outputDirectory))
def apply(cacheDirectory: File, inputStyle: FilesInfo.Style, outputStyle: FilesInfo.Style)(inputDirectory: Task[File], outputDirectory: Task[File]): Sync =
Sync(cacheDirectory, inputStyle, outputStyle)(sources(inputDirectory, outputDirectory))
}
object Sync
{
def apply(cacheDirectory: File)(sources: Task[Iterable[(File,File)]]): Sync =
apply(cacheDirectory, FilesInfo.hash, FilesInfo.lastModified)(sources)
def apply(cacheDirectory: File, inputStyle: FilesInfo.Style, outputStyle: FilesInfo.Style)(sources: Task[Iterable[(File,File)]]): Sync =
new Sync(cacheDirectory, inputStyle, outputStyle)(sources)
}
class Sync(val cacheDirectory: File, val inputStyle: FilesInfo.Style, val outputStyle: FilesInfo.Style)(val sources: Task[Iterable[(File,File)]]) extends TrackedTaskDefinition[Set[File]]
{
private val invalidation = InvalidateFiles(cacheDirectory)
private val changedInputs = Difference.inputs(extract(_._1), inputStyle, cacheFile("inputs"))
private val changedOutputs = Difference.outputs(extract(_._2), outputStyle, cacheFile("outputs"))
private def extract(f: ((File,File)) => File) = sources.map(Set() ++ _.map(f))
val tracked = Seq(changedOutputs, changedInputs, invalidation)
lazy val task =
sources bind { srcs =>
val sourcesTargets = srcs.toSeq
changedInputs { inputChanges =>
changedOutputs { outputChanges =>
invalidation(inputChanges +++ outputChanges) { (report, tracking) =>
Task
{
val invalidInputs = report.invalid ** inputChanges.checked
val invalidOutputs = report.invalid ** outputChanges.checked
for((source,target) <- sourcesTargets if invalidInputs(source) ||invalidOutputs(target) )
{
FileUtilities.copyFile(source, target)
tracking.product(source, target)
}
Set( outputChanges.checked.toSeq : _*)
}
}
}
}
}
}

View File

@ -1,24 +0,0 @@
/* sbt -- Simple Build Tool
* Copyright 2009, 2010 Mark Harrah
*/
package xsbt
import java.io.File
trait TaskDefinition[T]
{
val task: Task[T]
val clean: Task[Unit]
}
trait TrackedTaskDefinition[T] extends TaskDefinition[T] with WithCache
{
val tracked: Seq[Tracked]
lazy val clean: Task[Unit] = onTracked(_.clean).bind( u => onTracked(_.clear) )
import Task._
private def onTracked(f: Tracked => Task[Unit]) = tracked.forkTasks(f).joinIgnore
}
trait WithCache
{
def cacheDirectory: File
def cacheFile(relative: String) = new File(cacheDirectory, relative)
}

View File

@ -1,56 +0,0 @@
package xsbt
import FileUtilities.{read, withTemporaryDirectory => temp, write}
object SyncTest
{
import Paths._
def apply(content: String)
{
try { test(content) }
catch { case e: TasksFailed => e.failures.foreach(_.exception.printStackTrace) }
}
def test(content: String)
{
temp { fromDir => temp { toDir => temp { cacheDir =>
val from = fromDir / "test"
val to = toDir / "test-2"
write(from, content)
val sync = Sync(cacheDir)( Task( (from, to) :: Nil ))
val result = TaskRunner(sync.task)
println(result + " ::: " +read(to) + "\n\n")
to.delete
val result2 = TaskRunner(sync.task)
println(result2 + " ::: " +read(to) + "\n\n")
write(from, content.reverse)
TaskRunner(sync.clean)
println(from.exists + " " + fromDir.exists + " " + to.exists + " " + toDir.exists)
} } }
}
}
object CompileTest
{
def apply(dir: String, scalaVersion: String, options: Seq[String])
{
def test()
{
import Paths._
import GlobFilter._
val base = new java.io.File(dir)
val sources = Task(((base / "src" / "main" / "scala") ** "*.scala") ++ (base * "*.scala"))
val classpath = Task( dir / "lib" * "*.jar" )
WithCompiler(scalaVersion) { (compiler, log) =>
temp { cacheDir => temp { outDir =>
val compile = AggressiveCompile(sources, classpath, Task(outDir), Task(options), cacheDir, Task(compiler), log)
println("Result: " + TaskRunner(compile.task))
println("Result: " + TaskRunner(compile.task))
TaskRunner(compile.clean)
println("Result: " + TaskRunner(compile.task))
println("Result: " + TaskRunner(compile.task))
} }
}
}
try { test() }
catch { case e: TasksFailed => e.failures.foreach(_.exception.printStackTrace); case e: Exception => e.printStackTrace }
}
}