#include "command.hh" #include "shared.hh" #include "store-api.hh" #include "finally.hh" #include using namespace nix; struct CmdPingStore : StoreCommand, MixJSON { std::string description() override { return "test whether a store can be accessed"; } std::string doc() override { return #include "ping-store.md" ; } void run(ref store) override { if (!json) { notice("Store URL: %s", store->getUri()); store->connect(); if (auto version = store->getVersion()) notice("Version: %s", *version); if (auto trusted = store->isTrustedClient()) notice("Trusted: %s", *trusted); } else { nlohmann::json res; Finally printRes([&]() { logger->cout("%s", res); }); res["url"] = store->getUri(); store->connect(); if (auto version = store->getVersion()) res["version"] = *version; if (auto trusted = store->isTrustedClient()) res["trusted"] = *trusted; } } }; struct CmdInfoStore : CmdPingStore { void run(nix::ref store) override { warn("'nix store info' is a deprecated alias for 'nix store ping'"); CmdPingStore::run(store); } }; static auto rCmdPingStore = registerCommand2({"store", "ping"}); static auto rCmdInfoStore = registerCommand2({"store", "info"});