mirror of
https://github.com/NixOS/nix
synced 2025-06-28 13:41:15 +02:00
feat(nix-instantiate): add --raw flag
The experimental `nix eval` command already supports a `--raw` flag. This commit implements the same flag for the stable nix-instantiate command. Until now instructions and scripts that didn't want to rely on experimental features had to use workarounds such as: nix-instantiate --eval <something> | tr -d \" (which also undesirably also removes double quotation marks within the string), or nix-instantiate --eval <something> | jq -j (which undesirably depends on another package). Co-authored-by: Silvan Mosberger <silvan.mosberger@tweag.io>
This commit is contained in:
parent
1a402e0c53
commit
7a8a28629c
5 changed files with 24 additions and 4 deletions
|
@ -24,7 +24,7 @@ static Path gcRoot;
|
|||
static int rootNr = 0;
|
||||
|
||||
|
||||
enum OutputKind { okPlain, okXML, okJSON };
|
||||
enum OutputKind { okPlain, okRaw, okXML, okJSON };
|
||||
|
||||
void processExpr(EvalState & state, const Strings & attrPaths,
|
||||
bool parseOnly, bool strict, Bindings & autoArgs,
|
||||
|
@ -50,7 +50,11 @@ void processExpr(EvalState & state, const Strings & attrPaths,
|
|||
vRes = v;
|
||||
else
|
||||
state.autoCallFunction(autoArgs, v, vRes);
|
||||
if (output == okXML)
|
||||
if (output == okRaw)
|
||||
std::cout << *state.coerceToString(noPos, vRes, context, "while generating the nix-instantiate output");
|
||||
// We intentionally don't output a newline here. The default PS1 for Bash in NixOS starts with a newline
|
||||
// and other interactive shells like Zsh are smart enough to print a missing newline before the prompt.
|
||||
else if (output == okXML)
|
||||
printValueAsXML(state, strict, location, vRes, std::cout, context, noPos);
|
||||
else if (output == okJSON) {
|
||||
printValueAsJSON(state, strict, vRes, v.determinePos(noPos), std::cout, context);
|
||||
|
@ -132,6 +136,8 @@ static int main_nix_instantiate(int argc, char * * argv)
|
|||
gcRoot = getArg(*arg, arg, end);
|
||||
else if (*arg == "--indirect")
|
||||
;
|
||||
else if (*arg == "--raw")
|
||||
outputKind = okRaw;
|
||||
else if (*arg == "--xml")
|
||||
outputKind = okXML;
|
||||
else if (*arg == "--json")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue