mirror of https://github.com/sbt/sbt.git
Task.doFinally
This commit is contained in:
parent
171cbeb9ce
commit
fdb4a98d8b
|
|
@ -31,4 +31,9 @@ object Result
|
||||||
case Inc(i) => throw i
|
case Inc(i) => throw i
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
def tryValues[S](r: Seq[Result[Unit]], v: Result[S]): S =
|
||||||
|
{
|
||||||
|
r foreach tryValue[Unit]
|
||||||
|
tryValue[S](v)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -28,6 +28,7 @@ sealed trait SingleInTask[S]
|
||||||
def mapFailure[T](f: Incomplete => T): Task[T]
|
def mapFailure[T](f: Incomplete => T): Task[T]
|
||||||
def dependsOn(tasks: Task[_]*): Task[S]
|
def dependsOn(tasks: Task[_]*): Task[S]
|
||||||
def andFinally(fin: => Unit): Task[S]
|
def andFinally(fin: => Unit): Task[S]
|
||||||
|
def doFinally(t: Task[Unit]): Task[S]
|
||||||
|
|
||||||
def || [T >: S](alt: Task[T]): Task[T]
|
def || [T >: S](alt: Task[T]): Task[T]
|
||||||
def && [T](alt: Task[T]): Task[T]
|
def && [T](alt: Task[T]): Task[T]
|
||||||
|
|
@ -224,6 +225,7 @@ trait TaskExtra
|
||||||
def mapFailure[T](f: Incomplete => T): Task[T] = mapR(f compose failM)
|
def mapFailure[T](f: Incomplete => T): Task[T] = mapR(f compose failM)
|
||||||
|
|
||||||
def andFinally(fin: => Unit): Task[S] = mapR(x => Result.tryValue[S]( { fin; x }))
|
def andFinally(fin: => Unit): Task[S] = mapR(x => Result.tryValue[S]( { fin; x }))
|
||||||
|
def doFinally(t: Task[Unit]): Task[S] = flatMapR(x => t.mapR { tx => Result.tryValues[S](tx :: Nil, x) })
|
||||||
def || [T >: S](alt: Task[T]): Task[T] = flatMapR { case Value(v) => task(v); case Inc(i) => alt }
|
def || [T >: S](alt: Task[T]): Task[T] = flatMapR { case Value(v) => task(v); case Inc(i) => alt }
|
||||||
def && [T](alt: Task[T]): Task[T] = flatMap( _ => alt )
|
def && [T](alt: Task[T]): Task[T] = flatMap( _ => alt )
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue