Fix use of several config settings

annex.ssh-options, annex.rsync-options, annex.bup-split-options.

And adjust types to avoid the bugs that broke several config settings
recently. Now "annex." prefixing is enforced at the type level.
This commit is contained in:
Joey Hess 2012-05-05 20:15:32 -04:00
parent 657d09d499
commit f7d8982672
10 changed files with 49 additions and 33 deletions

View file

@ -23,12 +23,11 @@ module Annex.UUID (
import Common.Annex
import qualified Git
import qualified Git.Config
import qualified Git.Command
import qualified Build.SysConfig as SysConfig
import Config
configkey :: String
configkey = "annex.uuid"
configkey :: ConfigKey
configkey = annexConfig "uuid"
{- Generates a UUID. There is a library for this, but it's not packaged,
- so use the command line tool. -}
@ -64,16 +63,17 @@ getRepoUUID r = do
cachekey = remoteConfig r "uuid"
removeRepoUUID :: Annex ()
removeRepoUUID = inRepo $ Git.Command.run "config"
[Param "--unset", Param configkey]
removeRepoUUID = unsetConfig configkey
getUncachedUUID :: Git.Repo -> UUID
getUncachedUUID = toUUID . Git.Config.get configkey ""
getUncachedUUID = toUUID . Git.Config.get key ""
where
(ConfigKey key) = configkey
{- Make sure that the repo has an annex.uuid setting. -}
prepUUID :: Annex ()
prepUUID = whenM ((==) NoUUID <$> getUUID) $
storeUUID configkey =<< liftIO genUUID
storeUUID :: String -> UUID -> Annex ()
storeUUID :: ConfigKey -> UUID -> Annex ()
storeUUID configfield = setConfig configfield . fromUUID