diff options
-rw-r--r-- | Command/Group.hs | 3 | ||||
-rw-r--r-- | Command/Ungroup.hs | 3 | ||||
-rw-r--r-- | Logs/Group.hs | 16 |
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 |