diff options
author | Daniel Brooks <db48x@db48x.net> | 2016-12-05 09:59:20 -0500 |
---|---|---|
committer | Daniel Brooks <db48x@db48x.net> | 2016-12-05 09:59:20 -0500 |
commit | 31bbf7577aa17d4af44714526ab7651c74369a36 (patch) | |
tree | 9d3d0fcfb674acd6146adda54491d381caffad05 /Command | |
parent | c6970ef134cdc376fad48fbd8eb79c562d434e7c (diff) |
git-annex fromkey now takes multiple pairs of keys and filenames
It also still reads from stdin when none are specified.
Diffstat (limited to 'Command')
-rw-r--r-- | Command/FromKey.hs | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/Command/FromKey.hs b/Command/FromKey.hs index 670e9e6a6..0916cf79d 100644 --- a/Command/FromKey.hs +++ b/Command/FromKey.hs @@ -20,16 +20,18 @@ import Network.URI cmd :: Command cmd = notDirect $ notBareRepo $ command "fromkey" SectionPlumbing "adds a file using a specific key" - (paramPair paramKey paramPath) + (paramRepeating (paramPair paramKey paramPath)) (withParams seek) seek :: CmdParams -> CommandSeek +seek [] = do + withNothing startMass [] seek ps = do force <- Annex.getState Annex.force - withWords (start force) ps + withPairs (start force) ps -start :: Bool -> [String] -> CommandStart -start force (keyname:file:[]) = do +start :: Bool -> (String, FilePath) -> CommandStart +start force (keyname, file) = do let key = mkKey keyname unless force $ do inbackend <- inAnnex key @@ -37,10 +39,11 @@ start force (keyname:file:[]) = do "key ("++ keyname ++") is not present in backend (use --force to override this sanity check)" showStart "fromkey" file next $ perform key file -start _ [] = do + +startMass :: CommandStart +startMass = do showStart "fromkey" "stdin" next massAdd -start _ _ = giveup "specify a key and a dest file" massAdd :: CommandPerform massAdd = go True =<< map (separate (== ' ')) . lines <$> liftIO getContents |