show last line if it cannot be parsed as a serialized Result

This commit is contained in:
Joey Hess 2014-11-21 23:30:01 -04:00
parent 40bfcacf4e
commit 0a415a7b41
Failed to extract signature
1 changed files with 8 additions and 3 deletions

View File

@ -11,7 +11,6 @@ import "mtl" Control.Monad.Reader
import Control.Exception (bracket)
import System.PosixCompat
import System.Posix.IO
import Data.Maybe
import Propellor.Types
import Propellor.Message
@ -74,8 +73,14 @@ processChainOutput h = go Nothing
go lastline = do
v <- catchMaybeIO (hGetLine h)
case v of
Nothing -> pure $ fromMaybe FailedChange $
readish =<< lastline
Nothing -> case lastline of
Nothing -> pure FailedChange
Just l -> case readish l of
Just r -> pure r
Nothing -> do
putStrLn l
hFlush stdout
return FailedChange
Just s -> do
maybe noop (\l -> unless (null l) (putStrLn l)) lastline
hFlush stdout