summaryrefslogtreecommitdiff
path: root/Command/Ungroup.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-10-01 15:12:04 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-10-01 15:12:04 -0400
commit59d2f363b7a2762978978bb3edf62aa47ef81abd (patch)
tree6519760756a8d9cef3558a91ab3cbc69f1e58ac3 /Command/Ungroup.hs
parent65315e13716443be3c50f7e556a1206a45df2a32 (diff)
group, ungroup: New commands to indicate groups of repositories.
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