git-annex fromkey now takes multiple pairs of keys and filenames
It also still reads from stdin when none are specified.
This commit is contained in:
parent
e0be5b354a
commit
24317be646
2 changed files with 14 additions and 9 deletions
|
@ -20,16 +20,18 @@ import Network.URI
|
||||||
cmd :: Command
|
cmd :: Command
|
||||||
cmd = notDirect $ notBareRepo $
|
cmd = notDirect $ notBareRepo $
|
||||||
command "fromkey" SectionPlumbing "adds a file using a specific key"
|
command "fromkey" SectionPlumbing "adds a file using a specific key"
|
||||||
(paramPair paramKey paramPath)
|
(paramRepeating (paramPair paramKey paramPath))
|
||||||
(withParams seek)
|
(withParams seek)
|
||||||
|
|
||||||
seek :: CmdParams -> CommandSeek
|
seek :: CmdParams -> CommandSeek
|
||||||
|
seek [] = do
|
||||||
|
withNothing startMass []
|
||||||
seek ps = do
|
seek ps = do
|
||||||
force <- Annex.getState Annex.force
|
force <- Annex.getState Annex.force
|
||||||
withWords (start force) ps
|
withPairs (start force) ps
|
||||||
|
|
||||||
start :: Bool -> [String] -> CommandStart
|
start :: Bool -> (String, FilePath) -> CommandStart
|
||||||
start force (keyname:file:[]) = do
|
start force (keyname, file) = do
|
||||||
let key = mkKey keyname
|
let key = mkKey keyname
|
||||||
unless force $ do
|
unless force $ do
|
||||||
inbackend <- inAnnex key
|
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)"
|
"key ("++ keyname ++") is not present in backend (use --force to override this sanity check)"
|
||||||
showStart "fromkey" file
|
showStart "fromkey" file
|
||||||
next $ perform key file
|
next $ perform key file
|
||||||
start _ [] = do
|
|
||||||
|
startMass :: CommandStart
|
||||||
|
startMass = do
|
||||||
showStart "fromkey" "stdin"
|
showStart "fromkey" "stdin"
|
||||||
next massAdd
|
next massAdd
|
||||||
start _ _ = giveup "specify a key and a dest file"
|
|
||||||
|
|
||||||
massAdd :: CommandPerform
|
massAdd :: CommandPerform
|
||||||
massAdd = go True =<< map (separate (== ' ')) . lines <$> liftIO getContents
|
massAdd = go True =<< map (separate (== ' ')) . lines <$> liftIO getContents
|
||||||
|
|
|
@ -4,14 +4,16 @@ git-annex fromkey - adds a file using a specific key
|
||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
git annex fromkey `[key file]`
|
git annex fromkey `[key file ...]`
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
This plumbing-level command can be used to manually set up a file
|
This plumbing-level command can be used to manually set up a file
|
||||||
in the git repository to link to a specified key.
|
in the git repository to link to a specified key.
|
||||||
|
|
||||||
If the key and file are not specified on the command line, they are
|
Multiple pairs of file and key can be given in a single command line.
|
||||||
|
|
||||||
|
If no key and file pair are specified on the command line, they are
|
||||||
instead read from stdin. Any number of lines can be provided in this
|
instead read from stdin. Any number of lines can be provided in this
|
||||||
mode, each containing a key and filename, separated by a single space.
|
mode, each containing a key and filename, separated by a single space.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue