summaryrefslogtreecommitdiff
path: root/Command/Ungroup.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Command/Ungroup.hs')
-rw-r--r--Command/Ungroup.hs35
1 files changed, 35 insertions, 0 deletions
diff --git a/Command/Ungroup.hs b/Command/Ungroup.hs
new file mode 100644
index 000000000..2161cec91
--- /dev/null
+++ b/Command/Ungroup.hs
@@ -0,0 +1,35 @@
+{- git-annex command
+ -
+ - Copyright 2012 Joey Hess <joey@kitenet.net>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+module Command.Ungroup where
+
+import Common.Annex
+import Command
+import qualified Remote
+import Logs.Group
+import Types.Group
+
+import qualified Data.Set as S
+
+def :: [Command]
+def = [command "ungroup" (paramPair paramRemote paramDesc) seek "remove a repository from a group"]
+
+seek :: [CommandSeek]
+seek = [withWords start]
+
+start :: [String] -> CommandStart
+start (name:g:[]) = do
+ showStart "ungroup" name
+ u <- Remote.nameToUUID name
+ next $ perform u g
+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)
+ next $ return True