aboutsummaryrefslogtreecommitdiff
path: root/Logs/Web.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-10-15 16:25:51 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-10-15 16:25:51 -0400
commitb4015064e1492c6591f69499d8d745989999ba53 (patch)
treec4de51ccdee63baa32263b4f030c8d18873fae5e /Logs/Web.hs
parent1a29b5b52eec641a5456d7c8dc24356c90107bc0 (diff)
break web log handling into a separate module
Diffstat (limited to 'Logs/Web.hs')
-rw-r--r--Logs/Web.hs49
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)