diff options
author | Joey Hess <joey@kitenet.net> | 2012-03-21 23:41:01 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-03-22 17:32:47 -0400 |
commit | 4eb51126819fe01a003688267f481c6d8014ef47 (patch) | |
tree | 40f88312d53da654b65a7ed25617e5bdbd6be03c /Config.hs | |
parent | 52b90e5d4c2a22415d48a8e572eab328dfcc4407 (diff) |
rationalize getConfig
getConfig got a remote-specific config, and this confusing name caused it
to be used a couple of places that only were interested in global configs.
Rename to getRemoteConfig and make getConfig only get global configs.
There are no behavior changes here, but remote.<name>.annex-web-options
never actually worked (and per-remote web options is a very unlikely to be
useful case so I didn't make it work), so fix the documentation for it.
Diffstat (limited to 'Config.hs')
-rw-r--r-- | Config.hs | 20 |
1 files changed, 12 insertions, 8 deletions
@@ -25,11 +25,15 @@ setConfig k value = do newg <- inRepo Git.Config.read Annex.changeState $ \s -> s { Annex.repo = newg } +{- Looks up a git config setting in git config. -} +getConfig :: ConfigKey -> String -> Annex String +getConfig key def = fromRepo $ Git.Config.get key def + {- Looks up a per-remote config setting in git config. - Failing that, tries looking for a global config option. -} -getConfig :: Git.Repo -> ConfigKey -> String -> Annex String -getConfig r key def = do - def' <- fromRepo $ Git.Config.get ("annex." ++ key) def +getRemoteConfig :: Git.Repo -> ConfigKey -> String -> Annex String +getRemoteConfig r key def = do + def' <- getConfig key def fromRepo $ Git.Config.get (remoteConfig r key) def' {- A per-remote config setting in git config. -} @@ -41,11 +45,11 @@ remoteConfig r key = "remote." ++ fromMaybe "" (Git.remoteName r) ++ ".annex-" + - is set and prints a number, that is used. -} remoteCost :: Git.Repo -> Int -> Annex Int remoteCost r def = do - cmd <- getConfig r "cost-command" "" + cmd <- getRemoteConfig r "cost-command" "" (fromMaybe def . readish) <$> if not $ null cmd then liftIO $ snd <$> pipeFrom "sh" ["-c", cmd] - else getConfig r "cost" "" + else getRemoteConfig r "cost" "" cheapRemoteCost :: Int cheapRemoteCost = 100 @@ -71,7 +75,8 @@ prop_cost_sane = False `notElem` {- Checks if a repo should be ignored. -} repoNotIgnored :: Git.Repo -> Annex Bool -repoNotIgnored r = not . fromMaybe False . Git.configTrue <$> getConfig r "ignore" "" +repoNotIgnored r = not . fromMaybe False . Git.configTrue + <$> getRemoteConfig r "ignore" "" {- If a value is specified, it is used; otherwise the default is looked up - in git config. forcenumcopies overrides everything. -} @@ -91,8 +96,7 @@ getTrustLevel r = fromRepo $ Git.Config.getMaybe $ remoteConfig r "trustlevel" {- Gets annex.diskreserve setting. -} getDiskReserve :: Bool -> Annex Integer getDiskReserve sanitycheck = do - g <- gitRepo - r <- getConfig g "diskreserve" "" + r <- getConfig "diskreserve" "" when sanitycheck $ check r return $ fromMaybe megabyte $ readSize dataUnits r where |