summaryrefslogtreecommitdiff
path: root/Logs/Group.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Logs/Group.hs')
-rw-r--r--Logs/Group.hs8
1 files changed, 8 insertions, 0 deletions
diff --git a/Logs/Group.hs b/Logs/Group.hs
index 09d431e63..56363f857 100644
--- a/Logs/Group.hs
+++ b/Logs/Group.hs
@@ -10,6 +10,7 @@ module Logs.Group (
groupSet,
lookupGroups,
groupMap,
+ getStandardGroup
) where
import qualified Data.Map as M
@@ -21,6 +22,7 @@ import qualified Annex.Branch
import qualified Annex
import Logs.UUIDBased
import Types.Group
+import Types.StandardGroups
{- Filename of group.log. -}
groupLog :: FilePath
@@ -64,3 +66,9 @@ makeGroupMap byuuid = GroupMap byuuid bygroup
bygroup = M.fromListWith S.union $
concat $ map explode $ M.toList byuuid
explode (u, s) = map (\g -> (g, S.singleton u)) (S.toList s)
+
+{- If a repository is in exactly one standard group, returns it. -}
+getStandardGroup :: S.Set Group -> Maybe StandardGroup
+getStandardGroup s = case catMaybes $ map toStandardGroup $ S.toList s of
+ [g] -> Just g
+ _ -> Nothing