summaryrefslogtreecommitdiff
path: root/Backend.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Backend.hs')
-rw-r--r--Backend.hs28
1 files changed, 16 insertions, 12 deletions
diff --git a/Backend.hs b/Backend.hs
index 551c041a8..055c5b8ab 100644
--- a/Backend.hs
+++ b/Backend.hs
@@ -48,20 +48,24 @@ list = do
if not $ null l
then return l
else do
+ s <- getstandard
+ d <- Annex.getState Annex.defaultbackend
+ handle d s
+ where
+ parseBackendList l [] = l
+ parseBackendList bs s = map (lookupBackendName bs) $ words s
+ handle Nothing s = return s
+ handle (Just "") s = return s
+ handle (Just name) s = do
bs <- Annex.getState Annex.supportedBackends
- g <- Annex.gitRepo
- let defaults = parseBackendList bs $ Git.configGet g "annex.backends" ""
- backendflag <- Annex.flagGet "backend"
- let l' = if not $ null backendflag
- then (lookupBackendName bs backendflag):defaults
- else defaults
- Annex.backendsChange l'
+ let l' = (lookupBackendName bs name):s
+ Annex.changeState $ \state -> state { Annex.backends = l' }
return l'
- where
- parseBackendList bs s =
- if null s
- then bs
- else map (lookupBackendName bs) $ words s
+ getstandard = do
+ bs <- Annex.getState Annex.supportedBackends
+ g <- Annex.gitRepo
+ return $ parseBackendList bs $
+ Git.configGet g "annex.backends" ""
{- Looks up a backend in a list. May fail if unknown. -}
lookupBackendName :: [Backend Annex] -> String -> Backend Annex