From a1119e81bafbf8cffdf2fb641d18f3e6185bb2e0 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 7 Oct 2013 16:06:34 -0400 Subject: add a log file for scheduled activities --- Logs/Schedule.hs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Logs/Schedule.hs (limited to 'Logs') diff --git a/Logs/Schedule.hs b/Logs/Schedule.hs new file mode 100644 index 000000000..213aceeed --- /dev/null +++ b/Logs/Schedule.hs @@ -0,0 +1,42 @@ +{- git-annex scheduled activities log + - + - Copyright 2013 Joey Hess + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module Logs.Schedule ( + scheduleLog, + scheduleSet, + scheduleGet, +) where + +import qualified Data.Map as M +import Data.Time.Clock.POSIX + +import Common.Annex +import Types.ScheduledActivity +import qualified Annex.Branch +import Logs +import Logs.UUIDBased + +scheduleSet :: UUID -> [ScheduledActivity] -> Annex () +scheduleSet uuid@(UUID _) activities = do + ts <- liftIO getPOSIXTime + Annex.Branch.change scheduleLog $ + showLog id . changeLog ts uuid val . parseLog Just + where + val = intercalate "; " $ map fromScheduledActivity activities +scheduleSet NoUUID _ = error "unknown UUID; cannot modify" + +scheduleMap :: Annex (M.Map UUID [ScheduledActivity]) +scheduleMap = simpleMap + . parseLogWithUUID parser + <$> Annex.Branch.get scheduleLog + where + parser _uuid = Just . mapMaybe toScheduledActivity . split "; " + +scheduleGet :: UUID -> Annex [ScheduledActivity] +scheduleGet u = do + m <- scheduleMap + return $ fromMaybe [] $ M.lookup u m -- cgit v1.2.3