From 28648ed78413c9a681501e37473cfebe39bedb1b Mon Sep 17 00:00:00 2001 From: Yorick van Pelt Date: Tue, 31 Jan 2023 13:24:23 +0100 Subject: [PATCH 1/3] nix store ping: add --json flag --- src/nix/ping-store.cc | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/nix/ping-store.cc b/src/nix/ping-store.cc index 3c3b7bb45ee..0d7a750750c 100644 --- a/src/nix/ping-store.cc +++ b/src/nix/ping-store.cc @@ -2,9 +2,11 @@ #include "shared.hh" #include "store-api.hh" +#include + using namespace nix; -struct CmdPingStore : StoreCommand +struct CmdPingStore : StoreCommand, MixJSON { std::string description() override { @@ -20,10 +22,19 @@ struct CmdPingStore : StoreCommand void run(ref store) override { - notice("Store URL: %s", store->getUri()); - store->connect(); - if (auto version = store->getVersion()) - notice("Version: %s", *version); + if (!json) { + notice("Store URL: %s", store->getUri()); + store->connect(); + if (auto version = store->getVersion()) + notice("Version: %s", *version); + } else { + nlohmann::json res; + res["url"] = store->getUri(); + store->connect(); + if (auto version = store->getVersion()) + res["version"] = *version; + logger->cout("%s", res); + } } }; From 4f4a6074e41bb635bc35ac14000b11d341536650 Mon Sep 17 00:00:00 2001 From: Yorick van Pelt Date: Tue, 31 Jan 2023 15:10:39 +0100 Subject: [PATCH 2/3] nix store ping: try to print json if connect() fails aswell --- src/nix/ping-store.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/nix/ping-store.cc b/src/nix/ping-store.cc index 0d7a750750c..5c44510ab94 100644 --- a/src/nix/ping-store.cc +++ b/src/nix/ping-store.cc @@ -1,6 +1,7 @@ #include "command.hh" #include "shared.hh" #include "store-api.hh" +#include "finally.hh" #include @@ -29,11 +30,13 @@ struct CmdPingStore : StoreCommand, MixJSON notice("Version: %s", *version); } else { nlohmann::json res; + Finally printRes([&]() { + logger->cout("%s", res); + }); res["url"] = store->getUri(); store->connect(); if (auto version = store->getVersion()) res["version"] = *version; - logger->cout("%s", res); } } }; From 4757b3f04e0a4568ab40ab86b9251945874a5662 Mon Sep 17 00:00:00 2001 From: Yorick van Pelt Date: Tue, 31 Jan 2023 15:10:54 +0100 Subject: [PATCH 3/3] tests/store-ping: test nix store ping --json --- tests/store-ping.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/store-ping.sh b/tests/store-ping.sh index f9427cf0a5c..9846c7d3d12 100644 --- a/tests/store-ping.sh +++ b/tests/store-ping.sh @@ -1,13 +1,17 @@ source common.sh STORE_INFO=$(nix store ping 2>&1) +STORE_INFO_JSON=$(nix store ping --json) echo "$STORE_INFO" | grep "Store URL: ${NIX_REMOTE}" if [[ -v NIX_DAEMON_PACKAGE ]] && isDaemonNewer "2.7.0pre20220126"; then DAEMON_VERSION=$($NIX_DAEMON_PACKAGE/bin/nix-daemon --version | cut -d' ' -f3) echo "$STORE_INFO" | grep "Version: $DAEMON_VERSION" + [[ "$(echo "$STORE_INFO_JSON" | jq -r ".version")" == "$DAEMON_VERSION" ]] fi expect 127 NIX_REMOTE=unix:$PWD/store nix store ping || \ fail "nix store ping on a non-existent store should fail" + +[[ "$(echo "$STORE_INFO_JSON" | jq -r ".url")" == "${NIX_REMOTE:-local}" ]]