summaryrefslogtreecommitdiff
path: root/Annex/UUID.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Annex/UUID.hs')
-rw-r--r--Annex/UUID.hs17
1 files changed, 10 insertions, 7 deletions
diff --git a/Annex/UUID.hs b/Annex/UUID.hs
index 39e296e5b..90189bc47 100644
--- a/Annex/UUID.hs
+++ b/Annex/UUID.hs
@@ -30,7 +30,7 @@ configkey = "annex.uuid"
{- Generates a UUID. There is a library for this, but it's not packaged,
- so use the command line tool. -}
genUUID :: IO UUID
-genUUID = pOpen ReadFromPipe command params hGetLine
+genUUID = pOpen ReadFromPipe command params $ liftM read . hGetLine
where
command = SysConfig.uuid
params = if command == "uuid"
@@ -50,20 +50,23 @@ getRepoUUID r = do
let c = cached g
let u = getUncachedUUID r
- if c /= u && u /= ""
+ if c /= u && u /= NoUUID
then do
updatecache g u
return u
else return c
where
- cached g = Git.configGet g cachekey ""
- updatecache g u = when (g /= r) $ setConfig cachekey u
+ cached g = read $ Git.configGet g cachekey ""
+ updatecache g u = when (g /= r) $ storeUUID cachekey u
cachekey = "remote." ++ fromMaybe "" (Git.repoRemoteName r) ++ ".annex-uuid"
getUncachedUUID :: Git.Repo -> UUID
-getUncachedUUID r = Git.configGet r configkey ""
+getUncachedUUID r = read $ Git.configGet r configkey ""
{- Make sure that the repo has an annex.uuid setting. -}
prepUUID :: Annex ()
-prepUUID = whenM (null <$> getUUID) $
- setConfig configkey =<< liftIO genUUID
+prepUUID = whenM ((==) NoUUID <$> getUUID) $
+ storeUUID configkey =<< liftIO genUUID
+
+storeUUID :: String -> UUID -> Annex ()
+storeUUID configfield uuid = setConfig configfield (show uuid)