aboutsummaryrefslogtreecommitdiff
path: root/Logs/Group.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-10-02 13:45:30 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-10-02 13:45:30 -0400
commitab39433a9523f9f8a9f8c561a46b38863c0f541d (patch)
treeeddfc683d72b27e1c64a57cfdde71449c06d7651 /Logs/Group.hs
parent3dfe4819b992b5486f5bca5fda9f64c7b3ed24a6 (diff)
status: display repository groups
Diffstat (limited to 'Logs/Group.hs')
-rw-r--r--Logs/Group.hs14
1 files changed, 11 insertions, 3 deletions
diff --git a/Logs/Group.hs b/Logs/Group.hs
index f701c5270..59f48f3a3 100644
--- a/Logs/Group.hs
+++ b/Logs/Group.hs
@@ -27,7 +27,7 @@ groupLog = "group.log"
{- Returns the groups of a given repo UUID. -}
lookupGroups :: UUID -> Annex (S.Set Group)
-lookupGroups u = (fromMaybe S.empty . M.lookup u) <$> groupMap
+lookupGroups u = (fromMaybe S.empty . M.lookup u) . groupsByUUID <$> groupMap
{- Applies a set modifier to change the groups for a uuid in the groupLog. -}
groupChange :: UUID -> (S.Set Group -> S.Set Group) -> Annex ()
@@ -48,7 +48,15 @@ groupMap = do
case cached of
Just m -> return m
Nothing -> do
- m <- simpleMap . parseLog (Just . S.fromList . words) <$>
- Annex.Branch.get groupLog
+ m <- makeGroupMap . simpleMap .
+ parseLog (Just . S.fromList . words) <$>
+ Annex.Branch.get groupLog
Annex.changeState $ \s -> s { Annex.groupmap = Just m }
return m
+
+makeGroupMap :: M.Map UUID (S.Set Group) -> GroupMap
+makeGroupMap byuuid = GroupMap byuuid bygroup
+ where
+ bygroup = M.fromListWith S.union $
+ concat $ map explode $ M.toList byuuid
+ explode (u, s) = map (\g -> (g, S.singleton u)) (S.toList s)