diff options
author | Joey Hess <joey@kitenet.net> | 2010-12-30 15:44:15 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2010-12-30 15:44:15 -0400 |
commit | 88ff9e82fc3dcb653b2a116f1c162d98a1f6bdcf (patch) | |
tree | cb52cb0a0e2326e61e30b8f364d96fb6c39fa44f | |
parent | 1c451fe3628f535898e7cf87ccad30270c6d16fb (diff) |
factor out a little more
-rw-r--r-- | CmdLine.hs | 15 | ||||
-rw-r--r-- | Core.hs | 2 | ||||
-rw-r--r-- | git-annex.hs | 18 |
3 files changed, 18 insertions, 17 deletions
diff --git a/CmdLine.hs b/CmdLine.hs index a2645f75f..b3dfc984d 100644 --- a/CmdLine.hs +++ b/CmdLine.hs @@ -6,19 +6,25 @@ -} module CmdLine ( + cmdLine, parseCmd, Option, storeOptBool, storeOptString, ) where +import System.Environment import System.Console.GetOpt import Control.Monad (when) import Control.Monad.State (liftIO) import qualified Annex +import qualified GitRepo as Git import Types import Command +import BackendList +import Core +import Upgrade {- Each dashed command-line option results in generation of an action - in the Annex monad that performs the necessary setting. @@ -30,6 +36,15 @@ storeOptBool name val = Annex.flagChange name $ FlagBool val storeOptString :: FlagName -> String -> Annex () storeOptString name val = Annex.flagChange name $ FlagString val +{- It all starts here. -} +cmdLine :: [Command] -> [Option] -> String -> IO () +cmdLine cmds options header = do + args <- getArgs + gitrepo <- Git.repoFromCwd + state <- Annex.new gitrepo allBackends + (actions, state') <- Annex.run state $ parseCmd args header cmds options + tryRun state' $ [startup, upgrade] ++ actions + {- Parses command line, stores configure flags, and returns a - list of actions to be run in the Annex monad. -} parseCmd :: [String] -> String -> [Command] -> [Option] -> Annex [Annex Bool] @@ -45,7 +45,7 @@ tryRun' state errnum (a:as) = do tryRun' state errnum [] = do _ <- try $ Annex.run state $ shutdown errnum when (errnum > 0) $ error $ show errnum ++ " failed" - + {- Actions to perform each time ran. -} startup :: Annex Bool startup = do diff --git a/git-annex.hs b/git-annex.hs index 31d90e4fc..b8176befa 100644 --- a/git-annex.hs +++ b/git-annex.hs @@ -5,17 +5,11 @@ - Licensed under the GNU GPL version 3 or higher. -} -import System.Environment import System.Console.GetOpt -import qualified Annex -import Core -import Upgrade import CmdLine -import qualified GitRepo as Git -import BackendList - import Command + import qualified Command.Add import qualified Command.Unannex import qualified Command.Drop @@ -83,13 +77,5 @@ options = [ "skip files matching the glob pattern" ] -header :: String -header = "Usage: git-annex subcommand [option ..]" - main :: IO () -main = do - args <- getArgs - gitrepo <- Git.repoFromCwd - state <- Annex.new gitrepo allBackends - (actions, state') <- Annex.run state $ parseCmd args header cmds options - tryRun state' $ [startup, upgrade] ++ actions +main = cmdLine cmds options "Usage: git-annex subcommand [option ..]" |