diff options
author | Joey Hess <joey@kitenet.net> | 2012-10-02 13:45:30 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-10-02 13:45:30 -0400 |
commit | ab39433a9523f9f8a9f8c561a46b38863c0f541d (patch) | |
tree | eddfc683d72b27e1c64a57cfdde71449c06d7651 /Logs/Group.hs | |
parent | 3dfe4819b992b5486f5bca5fda9f64c7b3ed24a6 (diff) |
status: display repository groups
Diffstat (limited to 'Logs/Group.hs')
-rw-r--r-- | Logs/Group.hs | 14 |
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) |