initial implementation of --explain
Currently it only displays explanations of options like --in and --copies. In the future, it should explain preferred content expression evaluation and other decisions. The explanations of a few things could be better. In particular, "standard" will just appear as-is (or as "!standard" if it doesn't match), rather than explaining why the standard preferred content expression for the group matches or not. Currently as implemented, it goes to stdout, and so commands like git-annex find that have custom output will not display --explain information. Perhaps that should change, dunno. Sponsored-by: Dartmouth College's DANDI project
This commit is contained in:
parent
cf40e2d4b6
commit
f25eeedeac
12 changed files with 122 additions and 46 deletions
|
@ -50,6 +50,7 @@ module Messages (
|
|||
outputMessage,
|
||||
withMessageState,
|
||||
MessageState,
|
||||
explain,
|
||||
prompt,
|
||||
mkPrompter,
|
||||
sanitizeTopLevelExceptionMessages,
|
||||
|
@ -299,6 +300,14 @@ jsonOutputEnabled = withMessageState $ \s -> return $
|
|||
JSONOutput _ -> True
|
||||
_ -> False
|
||||
|
||||
explain :: Maybe RawFilePath -> StringContainingQuotedPath -> Annex ()
|
||||
explain Nothing _ = return ()
|
||||
explain (Just f) msg = do
|
||||
rd <- Annex.getRead id
|
||||
when (Annex.explainenabled rd) $
|
||||
outputMessage JSON.none id $
|
||||
"[" <> QuotedPath f <> " " <> msg <> "]\n"
|
||||
|
||||
{- Prevents any concurrent console access while running an action, so
|
||||
- that the action is the only thing using the console, and can eg prompt
|
||||
- the user.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue