diff options
-rw-r--r-- | Command/DropKey.hs | 39 | ||||
-rw-r--r-- | debian/changelog | 1 | ||||
-rw-r--r-- | doc/git-annex-dropkey.mdwn | 7 |
3 files changed, 37 insertions, 10 deletions
diff --git a/Command/DropKey.hs b/Command/DropKey.hs index 60d7d5fc7..71993acbb 100644 --- a/Command/DropKey.hs +++ b/Command/DropKey.hs @@ -1,6 +1,6 @@ {- git-annex command - - - Copyright 2010 Joey Hess <id@joeyh.name> + - Copyright 2010,2016 Joey Hess <id@joeyh.name> - - Licensed under the GNU GPL version 3 or higher. -} @@ -13,26 +13,45 @@ import Logs.Location import Annex.Content cmd :: Command -cmd = noCommit $ +cmd = noCommit $ command "dropkey" SectionPlumbing "drops annexed content for specified keys" (paramRepeating paramKey) - (withParams seek) + (seek <$$> optParser) -seek :: CmdParams -> CommandSeek -seek = withKeys start +data DropKeyOptions = DropKeyOptions + { toDrop :: [String] + , batchOption :: BatchMode + } -start :: Key -> CommandStart -start key = stopUnless (inAnnex key) $ do +optParser :: CmdParamsDesc -> Parser DropKeyOptions +optParser desc = DropKeyOptions + <$> cmdParams desc + <*> parseBatchOption + +seek :: DropKeyOptions -> CommandSeek +seek o = do unlessM (Annex.getState Annex.force) $ error "dropkey can cause data loss; use --force if you're sure you want to do this" + withKeys start (toDrop o) + case batchOption o of + Batch -> batchInput parsekey $ batchCommandAction . start + NoBatch -> noop + where + parsekey = maybe (Left "bad key") Right . file2key + +start :: Key -> CommandStart +start key = do showStart' "dropkey" key Nothing next $ perform key perform :: Key -> CommandPerform -perform key = lockContentForRemoval key $ \contentlock -> do - removeAnnex contentlock - next $ cleanup key +perform key = ifM (inAnnex key) + ( lockContentForRemoval key $ \contentlock -> do + removeAnnex contentlock + next $ cleanup key + , next $ return True + ) cleanup :: Key -> CommandCleanup cleanup key = do diff --git a/debian/changelog b/debian/changelog index 9bd61260f..59ac9a51b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,7 @@ git-annex (6.20160230) UNRELEASED; urgency=medium Thanks, Klaus Ethgen. * Added dependencies on haskell mountpoints and disk-free-space libraries, removing FFI code from git-annex. + * dropkey: Add --batch. -- Joey Hess <id@joeyh.name> Mon, 29 Feb 2016 13:00:30 -0400 diff --git a/doc/git-annex-dropkey.mdwn b/doc/git-annex-dropkey.mdwn index 0db29f900..03f03ec4e 100644 --- a/doc/git-annex-dropkey.mdwn +++ b/doc/git-annex-dropkey.mdwn @@ -17,6 +17,13 @@ to have a file in the git repository pointing at them. Warning: This command does not check that enough other copies of the content exist; using it can easily result in data loss. +# OPTIONS + +* `--batch` + + Enables batch mode, in which lines containing keys to drop are read from + stdin. + # SEE ALSO [[git-annex]](1) |