diff options
author | Joey Hess <joeyh@joeyh.name> | 2015-12-21 12:57:13 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2015-12-21 12:57:13 -0400 |
commit | 98194e4c61466ec9175e65af557b6130be81617d (patch) | |
tree | c58dfeb2d7c50548a1328948a5f23e9563c4e643 /CmdLine | |
parent | 4e7b407c066a46002011b99c7621c3a7cc3d7622 (diff) |
addurl: Added --batch option.
Diffstat (limited to 'CmdLine')
-rw-r--r-- | CmdLine/Batch.hs | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/CmdLine/Batch.hs b/CmdLine/Batch.hs index 57823b67b..ce9127975 100644 --- a/CmdLine/Batch.hs +++ b/CmdLine/Batch.hs @@ -12,15 +12,13 @@ import Command data BatchMode = Batch | NoBatch -batchOption :: Parser BatchMode -batchOption = flag NoBatch Batch +parseBatchOption :: Parser BatchMode +parseBatchOption = flag NoBatch Batch ( long "batch" <> help "enable batch mode" ) -type Batchable t = BatchMode -> t -> CommandStart - --- A Batchable command can run in batch mode, or not. +-- A batchable command can run in batch mode, or not. -- In batch mode, one line at a time is read, parsed, and a reply output to -- stdout. In non batch mode, the command's parameters are parsed and -- a reply output for each. @@ -29,7 +27,7 @@ batchable handler parser paramdesc = batchseeker <$> batchparser where batchparser = (,,) <$> parser - <*> batchOption + <*> parseBatchOption <*> cmdParams paramdesc batchseeker (opts, NoBatch, params) = mapM_ (go NoBatch opts) params @@ -52,3 +50,13 @@ batchable handler parser paramdesc = batchseeker <$> batchparser batchBadInput :: BatchMode -> Annex () batchBadInput NoBatch = liftIO exitFailure batchBadInput Batch = liftIO $ putStrLn "" + +-- Reads lines of batch mode input and passes to the action to handle. +batchSeek :: (String -> Annex ()) -> Annex () +batchSeek a = do + mp <- liftIO $ catchMaybeIO getLine + case mp of + Nothing -> return () + Just p -> do + a p + batchSeek a |