summaryrefslogtreecommitdiff
path: root/Command.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-11-16 00:49:09 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-11-16 00:49:09 -0400
commit2bb6b02948da8a33b2edcd911fcf3c2597b0ee58 (patch)
tree631f0694c7b5a17064eb66862230ec666e3871a8 /Command.hs
parent84784e2ca1ababf21342cba36f7e65b4c3cd303b (diff)
When not run in a git repository, git-annex can still display a usage message, and "git annex version" even works.
Things that sound simple, but are made hard by the Annex monad being built with the assumption that there will always be a git repo.
Diffstat (limited to 'Command.hs')
-rw-r--r--Command.hs10
1 files changed, 8 insertions, 2 deletions
diff --git a/Command.hs b/Command.hs
index d22c2d12f..b66217192 100644
--- a/Command.hs
+++ b/Command.hs
@@ -7,6 +7,7 @@
module Command (
command,
+ noRepo,
next,
stop,
prepCommand,
@@ -31,9 +32,14 @@ import Logs.Trust
import Logs.Location
import Config
-{- Generates a command with the common checks. -}
+{- Generates a normal command -}
command :: String -> String -> [CommandSeek] -> String -> Command
-command = Command commonChecks
+command = Command Nothing commonChecks
+
+{- Adds a fallback action to a command, that will be run if it's used
+ - outside a git repository. -}
+noRepo :: IO () -> Command -> Command
+noRepo a c = c { cmdnorepo = Just a }
{- For start and perform stages to indicate what step to run next. -}
next :: a -> Annex (Maybe a)