aboutsummaryrefslogtreecommitdiff
path: root/src/nix-env/nix-env.cc
diff options
context:
space:
mode:
authorFarid Zakaria <fmzakari@google.com>2022-01-06 09:13:18 -0800
committerFarid Zakaria <fmzakari@google.com>2022-01-06 09:13:18 -0800
commit65257614ea77437a75447c3b5936f240e581ede9 (patch)
treece43047b8dc8883b8a0a07513c53c9c72f4d7e23 /src/nix-env/nix-env.cc
parentbdc577936ff1214e5fb9c7d0f57ddc4a2241322d (diff)
Add outputs to JSON query
Emit output information when printing JSON information and `--out-paths` is requested. fixes #5877
Diffstat (limited to 'src/nix-env/nix-env.cc')
-rw-r--r--src/nix-env/nix-env.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/nix-env/nix-env.cc b/src/nix-env/nix-env.cc
index f64075567..b2d789324 100644
--- a/src/nix-env/nix-env.cc
+++ b/src/nix-env/nix-env.cc
@@ -907,7 +907,7 @@ static VersionDiff compareVersionAgainstSet(
}
-static void queryJSON(Globals & globals, vector<DrvInfo> & elems)
+static void queryJSON(Globals & globals, vector<DrvInfo> & elems, bool printOutPath)
{
JSONObject topObj(cout, true);
for (auto & i : elems) {
@@ -919,6 +919,14 @@ static void queryJSON(Globals & globals, vector<DrvInfo> & elems)
pkgObj.attr("version", drvName.version);
pkgObj.attr("system", i.querySystem());
+ if (printOutPath) {
+ DrvInfo::Outputs outputs = i.queryOutputs();
+ JSONObject outputObj = pkgObj.object("outputs");
+ for (auto & j : outputs) {
+ outputObj.attr(j.first, j.second);
+ }
+ }
+
JSONObject metaObj = pkgObj.object("meta");
StringSet metaNames = i.queryMetaNames();
for (auto & j : metaNames) {
@@ -1035,7 +1043,7 @@ static void opQuery(Globals & globals, Strings opFlags, Strings opArgs)
/* Print the desired columns, or XML output. */
if (jsonOutput) {
- queryJSON(globals, elems);
+ queryJSON(globals, elems, printOutPath);
return;
}