whereis --batch

This commit is contained in:
Joey Hess 2016-01-20 12:46:00 -04:00
parent d44177c774
commit 9b9b5a30e1
Failed to extract signature
6 changed files with 33 additions and 13 deletions

View file

@ -65,3 +65,8 @@ batchInput parser a = do
batchCommandAction :: CommandStart -> Annex ()
batchCommandAction a = maybe (batchBadInput Batch) (const noop)
=<< callCommandAction' a
-- Reads lines of batch input and passes the filepaths to a CommandStart
-- to handle them.
batchFiles :: (FilePath -> CommandStart) -> Annex ()
batchFiles a = batchInput Right $ batchCommandAction . a

View file

@ -55,8 +55,7 @@ seek o = allowConcurrentOutput $ do
, startSmall file
)
case batchOption o of
Batch -> batchInput Right $
batchCommandAction . gofile
Batch -> batchFiles gofile
NoBatch -> do
let go a = a gofile (addThese o)
go (withFilesNotInGit (not $ includeDotFiles o))

View file

@ -1,6 +1,6 @@
{- git-annex command
-
- Copyright 2010-2014 Joey Hess <id@joeyh.name>
- Copyright 2010-2016 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU GPL version 3 or higher.
-}
@ -14,6 +14,7 @@ import Logs.Trust
import Logs.Web
import Remote.Web (getWebUrls)
import Annex.UUID
import CmdLine.Batch
import qualified Data.Map as M
@ -26,20 +27,26 @@ cmd = noCommit $ withGlobalOptions (jsonOption : annexedMatchingOptions) $
data WhereisOptions = WhereisOptions
{ whereisFiles :: CmdParams
, keyOptions :: Maybe KeyOptions
, batchOption :: BatchMode
}
optParser :: CmdParamsDesc -> Parser WhereisOptions
optParser desc = WhereisOptions
<$> cmdParams desc
<*> optional (parseKeyOptions False)
<*> parseBatchOption
seek :: WhereisOptions -> CommandSeek
seek o = do
m <- remoteMap id
withKeyOptions (keyOptions o) False
(startKeys m)
(withFilesInGit $ whenAnnexed $ start m)
(whereisFiles o)
let go = whenAnnexed $ start m
case batchOption o of
Batch -> batchFiles go
NoBatch ->
withKeyOptions (keyOptions o) False
(startKeys m)
(withFilesInGit go)
(whereisFiles o)
start :: M.Map UUID Remote -> FilePath -> Key -> CommandStart
start remotemap file key = start' remotemap key (Just file)

2
debian/changelog vendored
View file

@ -2,7 +2,7 @@ git-annex (6.20160115) UNRELEASED; urgency=medium
* whereis --json: Urls are now listed inside the remote that claims them,
rather than all together at the end.
* info, add: Support --batch mode.
* info, add, whereis: Support --batch mode.
* Force output to be line-buffered, even when it's not connected to the
terminal. This is particuarly important for commands with --batch
output, which was not always being flushed at an appropriate time.

View file

@ -22,11 +22,6 @@ For example:
# OPTIONS
* `--json`
Enable JSON output. This is intended to be parsed by programs that use
git-annex. Each line of output is a JSON object.
* file matching options
The [[git-annex-matching-options]](1)
@ -44,6 +39,18 @@ For example:
Show whereis information for files found by last run of git-annex unused.
* `--json`
Enable JSON output. This is intended to be parsed by programs that use
git-annex. Each line of output is a JSON object.
* `--batch`
Enables batch mode, in which a file is read in a line from stdin,
its information displayed, and repeat.
Note that if the file is not an annexed file, an empty line will be
output instead.
# SEE ALSO

View file

@ -1 +1,3 @@
subject. IMHO yet another useful command to be batched
> [[done]] --[[Joey]]