diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2017-10-22 09:37:50 -0700 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2017-10-22 09:37:50 -0700 |
commit | d5b903d44cbd29f838db3ea475d1efa101ad810f (patch) | |
tree | 3cb29f86f7be07ab2aaf3cf74fc66e41e9d3ed94 /src/main/scala/hbt/Evaluator.scala | |
parent | 06afaf6d3cf65cc7b42fa5f31aa6c48421626b6e (diff) | |
download | mill-d5b903d44cbd29f838db3ea475d1efa101ad810f.tar.gz mill-d5b903d44cbd29f838db3ea475d1efa101ad810f.tar.bz2 mill-d5b903d44cbd29f838db3ea475d1efa101ad810f.zip |
rename hbt -> forge
Diffstat (limited to 'src/main/scala/hbt/Evaluator.scala')
-rw-r--r-- | src/main/scala/hbt/Evaluator.scala | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/src/main/scala/hbt/Evaluator.scala b/src/main/scala/hbt/Evaluator.scala deleted file mode 100644 index 2931662a..00000000 --- a/src/main/scala/hbt/Evaluator.scala +++ /dev/null @@ -1,64 +0,0 @@ -package hbt - -import java.nio.{file => jnio} - -import sourcecode.Enclosing - -import scala.collection.mutable - -object Evaluator{ - - - def apply[T](t: Target[T], - workspacePath: jnio.Path) - (implicit enclosing: Enclosing): T = { - jnio.Files.createDirectories(workspacePath) - val targetPaths = mutable.Map.empty[Target[_], List[String]] - def rec(t: Target[_], path: List[String]): Unit = { - if (targetPaths.contains(t)) () // do nothing - else { - val currentPath = t.defCtx.staticEnclosing match{ - case None => path.reverse - case Some(s) => s.stripPrefix(enclosing.value).drop(1).split('.').toList - } - - targetPaths(t) = currentPath - t.inputs.zipWithIndex.foreach{case (c, i) => rec(c, i.toString :: currentPath)} - } - } - rec(t, Nil) - val targets = targetPaths.keys.toIndexedSeq - val targetIndices = targets.zipWithIndex.toMap - - val numberedEdges = - for(i <- targets.indices) - yield targets(i).inputs.map(targetIndices) - - val sortedClusters = Tarjans(numberedEdges) - val nonTrivialClusters = sortedClusters.filter(_.length > 1) - assert(nonTrivialClusters.isEmpty, nonTrivialClusters) - - val results = mutable.Map.empty[Target[_], Any] - for (cluster <- sortedClusters){ - val Seq(singletonIndex) = cluster - val target = targets(singletonIndex) - val inputResults = target.inputs.map(results) - val targetDestPath = workspacePath.resolve( - jnio.Paths.get(targetPaths(target).mkString("/")) - ) - import collection.JavaConverters._ - if (jnio.Files.exists(targetDestPath)){ - jnio.Files.walk(targetDestPath).iterator() - .asScala - .toArray - .reverseIterator - .map(jnio.Files.deleteIfExists) - } - - results(target) = target.evaluate( - new Args(inputResults.toIndexedSeq, targetDestPath) - ) - } - results(t).asInstanceOf[T] - } -} |