bfc9039ead
Most of the individual logs are not converted yet, only presense logs have an efficient ByteString Builder implemented so far. The rest convert to and from String.
36 lines
887 B
Haskell
36 lines
887 B
Haskell
{- Remote state logs.
|
|
-
|
|
- Copyright 2014 Joey Hess <id@joeyh.name>
|
|
-
|
|
- Licensed under the GNU GPL version 3 or higher.
|
|
-}
|
|
|
|
module Logs.RemoteState (
|
|
getRemoteState,
|
|
setRemoteState,
|
|
) where
|
|
|
|
import Annex.Common
|
|
import Logs
|
|
import Logs.UUIDBased
|
|
import qualified Annex.Branch
|
|
import qualified Annex
|
|
|
|
import qualified Data.Map as M
|
|
|
|
type RemoteState = String
|
|
|
|
setRemoteState :: UUID -> Key -> RemoteState -> Annex ()
|
|
setRemoteState u k s = do
|
|
c <- liftIO currentVectorClock
|
|
config <- Annex.getGitConfig
|
|
Annex.Branch.change (remoteStateLogFile config k) $
|
|
encodeBL . showLogNew id . changeLog c u s . parseLogNew Just . decodeBL
|
|
|
|
getRemoteState :: UUID -> Key -> Annex (Maybe RemoteState)
|
|
getRemoteState u k = do
|
|
config <- Annex.getGitConfig
|
|
extract . parseLogNew Just . decodeBL
|
|
<$> Annex.Branch.get (remoteStateLogFile config k)
|
|
where
|
|
extract m = value <$> M.lookup u m
|