get: Add --batch and --json options.

This commit is contained in:
Joey Hess 2016-07-05 08:56:23 -04:00
parent 92a401ae1e
commit ed8ecbea0c
Failed to extract signature
4 changed files with 38 additions and 10 deletions

View file

@ -3,6 +3,7 @@ git-annex (6.20160614) UNRELEASED; urgency=medium
* Webapp: Don't allow deleting a remote that has syncing disabled, * Webapp: Don't allow deleting a remote that has syncing disabled,
as such a deletion will never finish. as such a deletion will never finish.
Thanks, Farhan Kathawala. Thanks, Farhan Kathawala.
* get: Add --batch and --json options.
-- Joey Hess <id@joeyh.name> Mon, 13 Jun 2016 21:52:24 -0400 -- Joey Hess <id@joeyh.name> Mon, 13 Jun 2016 21:52:24 -0400

View file

@ -16,7 +16,7 @@ import Annex.Wanted
import qualified Command.Move import qualified Command.Move
cmd :: Command cmd :: Command
cmd = withGlobalOptions (jobsOption : annexedMatchingOptions) $ cmd = withGlobalOptions (jobsOption : jsonOption : annexedMatchingOptions) $
command "get" SectionCommon command "get" SectionCommon
"make content of annexed files available" "make content of annexed files available"
paramPaths (seek <$$> optParser) paramPaths (seek <$$> optParser)
@ -26,6 +26,7 @@ data GetOptions = GetOptions
, getFrom :: Maybe (DeferredParse Remote) , getFrom :: Maybe (DeferredParse Remote)
, autoMode :: Bool , autoMode :: Bool
, keyOptions :: Maybe KeyOptions , keyOptions :: Maybe KeyOptions
, batchOption :: BatchMode
} }
optParser :: CmdParamsDesc -> Parser GetOptions optParser :: CmdParamsDesc -> Parser GetOptions
@ -34,14 +35,18 @@ optParser desc = GetOptions
<*> optional parseFromOption <*> optional parseFromOption
<*> parseAutoOption <*> parseAutoOption
<*> optional (parseKeyOptions True) <*> optional (parseKeyOptions True)
<*> parseBatchOption
seek :: GetOptions -> CommandSeek seek :: GetOptions -> CommandSeek
seek o = allowConcurrentOutput $ do seek o = allowConcurrentOutput $ do
from <- maybe (pure Nothing) (Just <$$> getParsed) (getFrom o) from <- maybe (pure Nothing) (Just <$$> getParsed) (getFrom o)
withKeyOptions (keyOptions o) (autoMode o) let go = whenAnnexed $ start o from
(startKeys from) case batchOption o of
(withFilesInGit $ whenAnnexed $ start o from) Batch -> batchInput Right (batchCommandAction . go)
(getFiles o) NoBatch -> withKeyOptions (keyOptions o) (autoMode o)
(startKeys from)
(withFilesInGit go)
(getFiles o)
start :: GetOptions -> Maybe Remote -> FilePath -> Key -> CommandStart start :: GetOptions -> Maybe Remote -> FilePath -> Key -> CommandStart
start o from file key = start' expensivecheck from key (Just file) start o from file key = start' expensivecheck from key (Just file)

View file

@ -45,6 +45,11 @@ or transferring them from some kind of key-value store.
as git-annex does not know the associated file, and the associated file as git-annex does not know the associated file, and the associated file
may not even be in the current git working directory. may not even be in the current git working directory.
* file matching options
The [[git-annex-matching-options]](1)
can be used to specify files to get.
* `--all` * `--all`
Rather than specifying a filename or path to get, this option can be Rather than specifying a filename or path to get, this option can be
@ -60,10 +65,23 @@ or transferring them from some kind of key-value store.
Use this option to get a specified key. Use this option to get a specified key.
* file matching options * `--batch`
The [[git-annex-matching-options]](1) Enables batch mode, in which lines containing names of files to get
can be used to specify files to get. are read from stdin.
As each specified file is processed, the usual progress output is
displayed. If the specified file's content is already present, or
it is not an annexed file, a blank line is output in response instead.
Since the usual progress output while getting a file is verbose and not
machine-parseable, you may want to use --json in combination with
--batch.
* `--json`
Enable JSON output. This is intended to be parsed by programs that use
git-annex. Each line of output is a JSON object.
# SEE ALSO # SEE ALSO

View file

@ -1,3 +1,7 @@
It seems that it would be tremendously useful, see e.g. our [datalad install](https://github.com/datalad/datalad/issues/553) It seems that it would be tremendously useful, see e.g. our [datalad install](https://github.com/datalad/datalad/issues/553)
[[!meta author =yoh]] [[!meta author=yoh]]
> [[done]] although the output while getting a file is not
> machine-parseable. So, I made --json also work for get, but enabling
> json output disables any progress display. --[[Joey]]