diff options
author | Joey Hess <joey@kitenet.net> | 2010-10-14 03:40:26 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2010-10-14 03:40:26 -0400 |
commit | f407f23a54d9152a382ee8e48629f40e1a72a26f (patch) | |
tree | 088162654cba0cc1251d71140c51b8dc6ed165bb /git-annex.hs | |
parent | 6f3572e47f57bbe5cc76b58c8bcdc9c6c455dce0 (diff) |
more refactor
Diffstat (limited to 'git-annex.hs')
-rw-r--r-- | git-annex.hs | 41 |
1 files changed, 4 insertions, 37 deletions
diff --git a/git-annex.hs b/git-annex.hs index ce3b2ac42..b326b2b19 100644 --- a/git-annex.hs +++ b/git-annex.hs @@ -1,45 +1,12 @@ -{- git-annex main program - - -} +{- git-annex main program -} -import Control.Monad.State -import System.IO import System.Environment -import Control.Exception -import CmdLine -import Types -import Commands import qualified Annex +import Core +import CmdLine main = do args <- getArgs (mode, params) <- argvToMode args state <- start - tryRun state mode 0 0 params - -{- Processes each param in the list by dispatching the handler function - - for the user-selection operation mode. Catches exceptions, not stopping - - if some error out, and propigates an overall error status at the end. - - - - This runs in the IO monad, not in the Annex monad. It seems that - - exceptions can only be caught in the IO monad, not in a stacked monad; - - or more likely I missed an easy way to do it. So, I have to laboriously - - thread AnnexState through this function. - -} -tryRun :: AnnexState -> Mode -> Int -> Int -> [String] -> IO () -tryRun state mode errnum oknum [] = do - if (errnum > 0) - then error $ (show errnum) ++ " failed ; " ++ show (oknum) ++ " ok" - else return () -tryRun state mode errnum oknum (f:fs) = do - result <- try - (Annex.run state (dispatch mode f))::IO (Either SomeException ((), AnnexState)) - case (result) of - Left err -> do - showErr err - tryRun state mode (errnum + 1) oknum fs - Right (_,state') -> tryRun state' mode errnum (oknum + 1) fs - -{- Exception pretty-printing. -} -showErr e = do - hPutStrLn stderr $ "git-annex: " ++ (show e) - return () + tryRun state mode params |