aboutsummaryrefslogtreecommitdiff
path: root/Annex.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2010-10-17 11:47:36 -0400
committerGravatar Joey Hess <joey@kitenet.net>2010-10-17 11:47:36 -0400
commitb471822cfe4476995f539c6e7e7da7f7bf2b5e02 (patch)
tree31963b299051850ee0514dfec9a655e4a326c503 /Annex.hs
parent6bfa534aa4d7552c4ccfdb9523b55da19fac8883 (diff)
move supportedBackends list into annex monad
This was necessary so the File backend could import Backend w/o a cycle. Moved code that checks whether enough backends have a file into File backend.
Diffstat (limited to 'Annex.hs')
-rw-r--r--Annex.hs26
1 files changed, 19 insertions, 7 deletions
diff --git a/Annex.hs b/Annex.hs
index 68c0cb88e..e76ccd1dc 100644
--- a/Annex.hs
+++ b/Annex.hs
@@ -7,6 +7,8 @@ module Annex (
gitRepoChange,
backends,
backendsChange,
+ supportedBackends,
+ supportedBackendsChange,
flagIsSet,
flagChange,
Flag(..)
@@ -20,20 +22,21 @@ import qualified BackendTypes as Backend
{- Create and returns an Annex state object for the specified git repo.
-}
-new :: Git.Repo -> IO AnnexState
-new g = do
+new :: Git.Repo -> [Backend] -> IO AnnexState
+new gitrepo allbackends = do
let s = Backend.AnnexState {
- Backend.repo = g,
+ Backend.repo = gitrepo,
Backend.backends = [],
+ Backend.supportedBackends = allbackends,
Backend.flags = []
}
- (_,s') <- Annex.run s (prep g)
+ (_,s') <- Annex.run s (prep gitrepo)
return s'
where
- prep g = do
+ prep gitrepo = do
-- read git config and update state
- g' <- liftIO $ Git.configRead g
- Annex.gitRepoChange g'
+ gitrepo' <- liftIO $ Git.configRead gitrepo
+ Annex.gitRepoChange gitrepo'
-- performs an action in the Annex monad
run state action = runStateT (action) state
@@ -57,6 +60,15 @@ backendsChange b = do
state <- get
put state { Backend.backends = b }
return ()
+supportedBackends :: Annex [Backend]
+supportedBackends = do
+ state <- get
+ return (Backend.supportedBackends state)
+supportedBackendsChange :: [Backend] -> Annex ()
+supportedBackendsChange b = do
+ state <- get
+ put state { Backend.supportedBackends = b }
+ return ()
flagIsSet :: Flag -> Annex Bool
flagIsSet flag = do
state <- get