summaryrefslogtreecommitdiff
path: root/CmdLine
diff options
context:
space:
mode:
Diffstat (limited to 'CmdLine')
-rw-r--r--CmdLine/Batch.hs17
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