convenience on State for global locking

This commit is contained in:
Mark Harrah 2011-07-03 15:44:52 -04:00
parent 37cedcca5f
commit 17fad01b01
1 changed files with 4 additions and 0 deletions

View File

@ -4,6 +4,7 @@
package sbt package sbt
import java.io.File import java.io.File
import java.util.concurrent.Callable
import CommandSupport.FailureWall import CommandSupport.FailureWall
final case class State( final case class State(
@ -40,6 +41,7 @@ trait StateOps {
def put[T](key: AttributeKey[T], value: T): State def put[T](key: AttributeKey[T], value: T): State
def remove(key: AttributeKey[_]): State def remove(key: AttributeKey[_]): State
def baseDir: File def baseDir: File
def locked[T](file: File)(t: => T): T
def runExitHooks(): State def runExitHooks(): State
def addExitHook(f: => Unit): State def addExitHook(f: => Unit): State
} }
@ -92,5 +94,7 @@ object State
ExitHooks.runExitHooks(s.exitHooks.toSeq) ExitHooks.runExitHooks(s.exitHooks.toSeq)
s.copy(exitHooks = Set.empty) s.copy(exitHooks = Set.empty)
} }
def locked[T](file: File)(t: => T): T =
s.configuration.provider.scalaProvider.launcher.globalLock.apply(file, new Callable[T] { def call = t })
} }
} }