diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2017-05-03T12·08+0200 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2017-05-03T12·08+0200 |
commit | 782c0bff45593e7116d9b17b7de71b7ee636a807 (patch) | |
tree | a7662d37c71696c46dc9cc4ee5730325a11ecacb /src | |
parent | d3dcdfa00691cfe6f6a939fde218f1980d3cf73c (diff) |
nix eval: Add a --raw flag
Similar to "jq -r", this prints the evaluation result (which must be a string value) unquoted.
Diffstat (limited to 'src')
-rw-r--r-- | src/nix/eval.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/nix/eval.cc b/src/nix/eval.cc index eb2b13a2dcd7..981cefa800c4 100644 --- a/src/nix/eval.cc +++ b/src/nix/eval.cc @@ -10,6 +10,13 @@ using namespace nix; struct CmdEval : MixJSON, InstallablesCommand { + bool raw = false; + + CmdEval() + { + mkFlag(0, "raw", "print strings unquoted", &raw); + } + std::string name() override { return "eval"; @@ -22,13 +29,18 @@ struct CmdEval : MixJSON, InstallablesCommand void run(ref<Store> store) override { + if (raw && json) + throw UsageError("--raw and --json are mutually exclusive"); + auto state = getEvalState(); auto jsonOut = json ? std::make_unique<JSONList>(std::cout) : nullptr; for (auto & i : installables) { auto v = i->toValue(*state); - if (json) { + if (raw) { + std::cout << state->forceString(*v); + } else if (json) { PathSet context; auto jsonElem = jsonOut->placeholder(); printValueAsJSON(*state, true, *v, jsonElem, context); |