git-annex/Command/Ungroup.hs
Joey Hess 0033e6c0a6
Tab completion of many commands like info and trust now includes remotes
Especially useful with proxied remotes and clusters, where the user may not
be entirely familiar with the name and can learn by tab completion.
2024-06-30 12:39:18 -04:00

36 lines
876 B
Haskell

{- git-annex command
-
- Copyright 2012 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU AGPL version 3 or higher.
-}
module Command.Ungroup where
import Command
import qualified Remote
import Logs.Group
import Types.Group
import qualified Data.Set as S
cmd :: Command
cmd = command "ungroup" SectionSetup "remove a repository from a group"
(paramPair paramRemote paramDesc)
(withParams' seek completeRemotes)
seek :: CmdParams -> CommandSeek
seek = withWords (commandAction . start)
start :: [String] -> CommandStart
start (name:g:[]) = do
u <- Remote.nameToUUID name
starting "ungroup" (ActionItemOther (Just (UnquotedString name)))
(SeekInput [name, g]) $
perform u (toGroup g)
start _ = giveup "Specify a repository and a group."
perform :: UUID -> Group -> CommandPerform
perform uuid g = do
groupChange uuid (S.delete g)
next $ return True