diff options
Diffstat (limited to 'src/main/scala/forge/Evaluator.scala')
-rw-r--r-- | src/main/scala/forge/Evaluator.scala | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/main/scala/forge/Evaluator.scala b/src/main/scala/forge/Evaluator.scala index d6ff39a2..43b4f353 100644 --- a/src/main/scala/forge/Evaluator.scala +++ b/src/main/scala/forge/Evaluator.scala @@ -20,27 +20,25 @@ class Evaluator(workspacePath: jnio.Path, for (target <- sortedTargets){ val inputResults = target.inputs.map(results).toIndexedSeq - val targetDestPath = target.defCtx.value match{ - case Some(enclosingStr) => - val targetDestPath = workspacePath.resolve( - jnio.Paths.get(enclosingStr.stripSuffix(enclosingBase.value.getOrElse(""))) - ) - deleteRec(targetDestPath) - targetDestPath - - case None => jnio.Files.createTempDirectory(null) + val targetDestPath = { + val enclosingStr = target.defCtx.label + val targetDestPath = workspacePath.resolve( + jnio.Paths.get(enclosingStr.stripSuffix(enclosingBase.label)) + ) + deleteRec(targetDestPath) + targetDestPath + } val inputsHash = inputResults.hashCode - target.defCtx.value.flatMap(resultCache.get) match{ + resultCache.get(target.defCtx.label) match{ case Some((hash, res)) if hash == inputsHash && !target.dirty => results(target) = res case _ => evaluated.append(target) val res = target.evaluate(new Args(inputResults, targetDestPath)) - for(label <- target.defCtx.value) { - resultCache(label) = (inputsHash, res) - } + + resultCache(target.defCtx.label) = (inputsHash, res) results(target) = res } |