diff options
author | Joey Hess <joey@kitenet.net> | 2010-10-21 16:30:16 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2010-10-21 16:30:16 -0400 |
commit | 19fde4960dc1d6c8c05efd0f5b4293c2fb52ebf9 (patch) | |
tree | 81071cf95d64b2c3f2d206d6dc30b6154a524b22 /Annex.hs | |
parent | a68e36f518589bd15fea32da273ad6fd2f288bb5 (diff) |
new fromkey subcommand, for registering urls, etc0.01
had to redo Annex monad's flag storage
Diffstat (limited to 'Annex.hs')
-rw-r--r-- | Annex.hs | 27 |
1 files changed, 17 insertions, 10 deletions
@@ -10,10 +10,12 @@ module Annex ( supportedBackends, flagIsSet, flagChange, + flagGet, Flag(..) ) where import Control.Monad.State +import qualified Data.Map as M import qualified GitRepo as Git import Types @@ -27,7 +29,7 @@ new gitrepo allbackends = do Internals.repo = gitrepo, Internals.backends = [], Internals.supportedBackends = allbackends, - Internals.flags = [] + Internals.flags = M.empty } (_,s') <- Annex.run s (prep gitrepo) return s' @@ -63,15 +65,20 @@ supportedBackends :: Annex [Backend] supportedBackends = do state <- get return (Internals.supportedBackends state) -flagIsSet :: Flag -> Annex Bool -flagIsSet flag = do +flagIsSet :: FlagName -> Annex Bool +flagIsSet name = do state <- get - return $ elem flag $ Internals.flags state -flagChange :: Flag -> Bool -> Annex () -flagChange flag set = do + case (M.lookup name $ Internals.flags state) of + Just (FlagBool True) -> return True + _ -> return False +flagChange :: FlagName -> Flag -> Annex () +flagChange name val = do state <- get - let f = filter (/= flag) $ Internals.flags state - if (set) - then put state { Internals.flags = (flag:f) } - else put state { Internals.flags = f } + put state { Internals.flags = M.insert name val $ Internals.flags state } return () +flagGet :: FlagName -> Annex String +flagGet name = do + state <- get + case (M.lookup name $ Internals.flags state) of + Just (FlagString s) -> return s + _ -> return "" |