diff options
author | Joey Hess <joey@kitenet.net> | 2011-10-15 16:25:51 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-10-15 16:25:51 -0400 |
commit | b4015064e1492c6591f69499d8d745989999ba53 (patch) | |
tree | c4de51ccdee63baa32263b4f030c8d18873fae5e /Logs | |
parent | 1a29b5b52eec641a5456d7c8dc24356c90107bc0 (diff) |
break web log handling into a separate module
Diffstat (limited to 'Logs')
-rw-r--r-- | Logs/Web.hs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Logs/Web.hs b/Logs/Web.hs new file mode 100644 index 000000000..ff8fbdb6b --- /dev/null +++ b/Logs/Web.hs @@ -0,0 +1,49 @@ +{- Web url logs. + - + - Copyright 2011 Joey Hess <joey@kitenet.net> + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module Logs.Web ( + URLString, + webUUID, + setUrl, + getUrls +) where + +import Common.Annex +import Logs.Presence +import Logs.Location +import Logs.UUID + +type URLString = String + +-- Dummy uuid for the whole web. Do not alter. +webUUID :: UUID +webUUID = "00000000-0000-0000-0000-000000000001" + +{- The urls for a key are stored in remote/web/hash/key.log + - in the git-annex branch. -} +urlLog :: Key -> FilePath +urlLog key = "remote/web" </> hashDirLower key </> keyFile key ++ ".log" +oldurlLog :: Key -> FilePath +{- A bug used to store the urls elsewhere. -} +oldurlLog key = "remote/web" </> hashDirLower key </> show key ++ ".log" + +getUrls :: Key -> Annex [URLString] +getUrls key = do + us <- currentLog (urlLog key) + if null us + then currentLog (oldurlLog key) + else return us + +{- Records a change in an url for a key. -} +setUrl :: Key -> URLString -> LogStatus -> Annex () +setUrl key url status = do + g <- gitRepo + addLog (urlLog key) =<< logNow status url + + -- update location log to indicate that the web has the key, or not + us <- getUrls key + logChange g key webUUID (if null us then InfoMissing else InfoPresent) |