diff options
Diffstat (limited to 'CmdLine')
-rw-r--r-- | CmdLine/Batch.hs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/CmdLine/Batch.hs b/CmdLine/Batch.hs index 627c1df10..6ef21372f 100644 --- a/CmdLine/Batch.hs +++ b/CmdLine/Batch.hs @@ -48,16 +48,19 @@ batchBadInput Batch = liftIO $ putStrLn "" -- Reads lines of batch mode input and passes to the action to handle. batchInput :: (String -> Either String a) -> (a -> Annex ()) -> Annex () -batchInput parser a = do - mp <- liftIO $ catchMaybeIO getLine - case mp of - Nothing -> return () - Just v -> do - either parseerr a (parser v) - batchInput parser a +batchInput parser a = go =<< batchLines where + go [] = return () + go (l:rest) = do + either parseerr a (parser l) + go rest parseerr s = giveup $ "Batch input parse failure: " ++ s +batchLines :: Annex [String] +batchLines = liftIO $ do + fileEncoding stdin + lines <$> getContents + -- Runs a CommandStart in batch mode. -- -- The batch mode user expects to read a line of output, and it's up to the |