mirror of https://github.com/sbt/sbt.git
rm dead-end standard tasks
This commit is contained in:
parent
39839f2c16
commit
371a66bc3f
|
|
@ -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 : _*)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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)
|
||||
}
|
||||
|
|
@ -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 }
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue