aboutsummaryrefslogtreecommitdiff
path: root/Command/FromKey.hs
diff options
context:
space:
mode:
authorGravatar Daniel Brooks <db48x@db48x.net>2016-12-05 09:59:20 -0500
committerGravatar Daniel Brooks <db48x@db48x.net>2016-12-05 09:59:20 -0500
commit31bbf7577aa17d4af44714526ab7651c74369a36 (patch)
tree9d3d0fcfb674acd6146adda54491d381caffad05 /Command/FromKey.hs
parentc6970ef134cdc376fad48fbd8eb79c562d434e7c (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/FromKey.hs')
-rw-r--r--Command/FromKey.hs15
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