Add outputs to JSON query

Emit output information when printing JSON information
and `--out-paths` is requested.

fixes #5877
This commit is contained in:
Farid Zakaria 2022-01-06 09:13:18 -08:00
parent bdc577936f
commit 65257614ea

View file

@ -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;
}