aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Command/Group.hs3
-rw-r--r--Command/Ungroup.hs3
-rw-r--r--Logs/Group.hs16
3 files changed, 11 insertions, 11 deletions
diff --git a/Command/Group.hs b/Command/Group.hs
index 2952f2142..5513ca3f7 100644
--- a/Command/Group.hs
+++ b/Command/Group.hs
@@ -30,6 +30,5 @@ start _ = error "Specify a repository and a group."
perform :: UUID -> Group -> CommandPerform
perform uuid g = do
- s <- lookupGroups uuid
- groupSet uuid (S.insert g s)
+ groupChange uuid (S.insert g)
next $ return True
diff --git a/Command/Ungroup.hs b/Command/Ungroup.hs
index 2161cec91..ea5b8edb6 100644
--- a/Command/Ungroup.hs
+++ b/Command/Ungroup.hs
@@ -30,6 +30,5 @@ start _ = error "Specify a repository and a group."
perform :: UUID -> Group -> CommandPerform
perform uuid g = do
- s <- lookupGroups uuid
- groupSet uuid (S.delete g s)
+ groupChange uuid (S.delete g)
next $ return True
diff --git a/Logs/Group.hs b/Logs/Group.hs
index 9263c7760..f701c5270 100644
--- a/Logs/Group.hs
+++ b/Logs/Group.hs
@@ -6,7 +6,7 @@
-}
module Logs.Group (
- groupSet,
+ groupChange,
lookupGroups,
groupMap,
) where
@@ -29,15 +29,17 @@ groupLog = "group.log"
lookupGroups :: UUID -> Annex (S.Set Group)
lookupGroups u = (fromMaybe S.empty . M.lookup u) <$> groupMap
-{- Changes the groups for a uuid in the groupLog. -}
-groupSet :: UUID -> S.Set Group -> Annex ()
-groupSet uuid@(UUID _) groups = do
+{- Applies a set modifier to change the groups for a uuid in the groupLog. -}
+groupChange :: UUID -> (S.Set Group -> S.Set Group) -> Annex ()
+groupChange uuid@(UUID _) modifier = do
+ curr <- lookupGroups uuid
ts <- liftIO getPOSIXTime
Annex.Branch.change groupLog $
- showLog (unwords . S.toList) . changeLog ts uuid groups .
- parseLog (Just . S.fromList . words)
+ showLog (unwords . S.toList) .
+ changeLog ts uuid (modifier curr) .
+ parseLog (Just . S.fromList . words)
Annex.changeState $ \s -> s { Annex.groupmap = Nothing }
-groupSet NoUUID _ = error "unknown UUID; cannot modify group"
+groupChange NoUUID _ = error "unknown UUID; cannot modify group"
{- Read the groupLog into a map. The map is cached for speed. -}
groupMap :: Annex GroupMap