aboutsummaryrefslogtreecommitdiff
path: root/Logs/Activity.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Logs/Activity.hs')
-rw-r--r--Logs/Activity.hs37
1 files changed, 37 insertions, 0 deletions
diff --git a/Logs/Activity.hs b/Logs/Activity.hs
new file mode 100644
index 000000000..45262a633
--- /dev/null
+++ b/Logs/Activity.hs
@@ -0,0 +1,37 @@
+{- git-annex activity log
+ -
+ - Copyright 2015 Joey Hess <id@joeyh.name>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+module Logs.Activity (
+ Log,
+ Activity(..),
+ recordActivity,
+ lastActivities,
+) where
+
+import Data.Time.Clock.POSIX
+
+import Common.Annex
+import qualified Annex.Branch
+import Logs
+import Logs.UUIDBased
+
+data Activity = Fsck
+ deriving (Eq, Read, Show, Enum, Bounded)
+
+recordActivity :: Activity -> UUID -> Annex ()
+recordActivity act uuid = do
+ ts <- liftIO getPOSIXTime
+ Annex.Branch.change activityLog $
+ showLog id . changeLog ts uuid (show act) . parseLog readish
+
+lastActivities :: Maybe Activity -> Annex (Log Activity)
+lastActivities wantact = parseLog onlywanted <$> Annex.Branch.get activityLog
+ where
+ onlywanted s = case readish s of
+ Just a | wanted a -> Just a
+ _ -> Nothing
+ wanted a = maybe True (a ==) wantact