summaryrefslogtreecommitdiff
path: root/git-annex.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2010-10-14 03:40:26 -0400
committerGravatar Joey Hess <joey@kitenet.net>2010-10-14 03:40:26 -0400
commitf407f23a54d9152a382ee8e48629f40e1a72a26f (patch)
tree088162654cba0cc1251d71140c51b8dc6ed165bb /git-annex.hs
parent6f3572e47f57bbe5cc76b58c8bcdc9c6c455dce0 (diff)
more refactor
Diffstat (limited to 'git-annex.hs')
-rw-r--r--git-annex.hs41
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