From 1b007068ca4936306889b8b3af2bf224746a2318 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 29 Dec 2012 13:37:11 -0400 Subject: memoize parsing of annex.direct config setting It occurs to me that all config settings should be parsed once at startup, into a proper ADT, rather than all this ad-hoc parsing and memoization. One day.. --- Config.hs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'Config.hs') diff --git a/Config.hs b/Config.hs index 66b8dc124..02cbb5e51 100644 --- a/Config.hs +++ b/Config.hs @@ -116,13 +116,20 @@ getDiskReserve = fromMaybe megabyte . readSize dataUnits where megabyte = 1000000 -{- Gets annex.direct setting. -} +{- Gets annex.direct setting, cached for speed. -} isDirect :: Annex Bool -isDirect = fromMaybe False . Git.Config.isTrue <$> - getConfig (annexConfig "direct") "" +isDirect = maybe fromconfig return =<< Annex.getState Annex.direct + where + fromconfig = do + direct <- fromMaybe False . Git.Config.isTrue <$> + getConfig (annexConfig "direct") "" + Annex.changeState $ \s -> s { Annex.direct = Just direct } + return direct setDirect :: Bool -> Annex () -setDirect b = setConfig (annexConfig "direct") (if b then "true" else "false") +setDirect b = do + setConfig (annexConfig "direct") (if b then "true" else "false") + Annex.changeState $ \s -> s { Annex.direct = Just b } {- Gets annex.httpheaders or annex.httpheaders-command setting, - splitting it into lines. -} -- cgit v1.2.3