Merge pull request #9257 from Artturin/nixenvjsondrvpath

`nix-env --query`: fix `--json` ignoring `--drv-path`
This commit is contained in:
John Ericson 2023-11-20 16:32:35 -05:00 committed by GitHub
commit 516e7ddc41
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 2 deletions

View file

@ -1,2 +1,3 @@
# Release X.Y (202?-??-??) # Release X.Y (202?-??-??)
- Fixed a bug where `nix-env --query` ignored `--drv-path` when `--json` was set.

View file

@ -922,7 +922,7 @@ static VersionDiff compareVersionAgainstSet(
} }
static void queryJSON(Globals & globals, std::vector<DrvInfo> & elems, bool printOutPath, bool printMeta) static void queryJSON(Globals & globals, std::vector<DrvInfo> & elems, bool printOutPath, bool printDrvPath, bool printMeta)
{ {
using nlohmann::json; using nlohmann::json;
json topObj = json::object(); json topObj = json::object();
@ -953,6 +953,11 @@ static void queryJSON(Globals & globals, std::vector<DrvInfo> & elems, bool prin
} }
} }
if (printDrvPath) {
auto drvPath = i.queryDrvPath();
if (drvPath) pkgObj["drvPath"] = globals.state->store->printStorePath(*drvPath);
}
if (printMeta) { if (printMeta) {
json &metaObj = pkgObj["meta"]; json &metaObj = pkgObj["meta"];
metaObj = json::object(); metaObj = json::object();
@ -1079,7 +1084,7 @@ static void opQuery(Globals & globals, Strings opFlags, Strings opArgs)
/* Print the desired columns, or XML output. */ /* Print the desired columns, or XML output. */
if (jsonOutput) { if (jsonOutput) {
queryJSON(globals, elems, printOutPath, printMeta); queryJSON(globals, elems, printOutPath, printDrvPath, printMeta);
cout << '\n'; cout << '\n';
return; return;
} }

View file

@ -26,6 +26,7 @@ nix-env -f ./user-envs.nix -qa --json --out-path | jq -e '.[] | select(.name ==
.outputName == "out", .outputName == "out",
(.outputs.out | test("'$NIX_STORE_DIR'.*-0\\.1")) (.outputs.out | test("'$NIX_STORE_DIR'.*-0\\.1"))
] | all' ] | all'
nix-env -f ./user-envs.nix -qa --json --drv-path | jq -e '.[] | select(.name == "bar-0.1") | (.drvPath | test("'$NIX_STORE_DIR'.*-0\\.1\\.drv"))'
# Query descriptions. # Query descriptions.
nix-env -f ./user-envs.nix -qa '*' --description | grepQuiet silly nix-env -f ./user-envs.nix -qa '*' --description | grepQuiet silly