Merge branch 'master' into path-info

This commit is contained in:
John Ericson 2023-02-02 09:55:07 -05:00
commit 87ca46263d
4 changed files with 25 additions and 7 deletions

View file

@ -219,7 +219,7 @@ std::optional<FlakeRef> LockFile::isUnlocked() const
visit(root); visit(root);
for (auto & i : nodes) { for (auto & i : nodes) {
if (i == root) continue; if (i == ref<const Node>(root)) continue;
auto node = i.dynamic_pointer_cast<const LockedNode>(); auto node = i.dynamic_pointer_cast<const LockedNode>();
if (node && !node->lockedRef.input.isLocked()) if (node && !node->lockedRef.input.isLocked())
return node->lockedRef; return node->lockedRef;

View file

@ -762,7 +762,7 @@ StorePathSet Store::queryValidPaths(const StorePathSet & paths, SubstituteFlag m
auto doQuery = [&](const StorePath & path) { auto doQuery = [&](const StorePath & path) {
checkInterrupt(); checkInterrupt();
queryPathInfo(path, {[path, this, &state_, &wakeup](std::future<ref<const ValidPathInfo>> fut) { queryPathInfo(path, {[path, &state_, &wakeup](std::future<ref<const ValidPathInfo>> fut) {
auto state(state_.lock()); auto state(state_.lock());
try { try {
auto info = fut.get(); auto info = fut.get();

View file

@ -1,10 +1,13 @@
#include "command.hh" #include "command.hh"
#include "shared.hh" #include "shared.hh"
#include "store-api.hh" #include "store-api.hh"
#include "finally.hh"
#include <nlohmann/json.hpp>
using namespace nix; using namespace nix;
struct CmdPingStore : StoreCommand struct CmdPingStore : StoreCommand, MixJSON
{ {
std::string description() override std::string description() override
{ {
@ -20,10 +23,21 @@ struct CmdPingStore : StoreCommand
void run(ref<Store> store) override void run(ref<Store> store) override
{ {
if (!json) {
notice("Store URL: %s", store->getUri()); notice("Store URL: %s", store->getUri());
store->connect(); store->connect();
if (auto version = store->getVersion()) if (auto version = store->getVersion())
notice("Version: %s", *version); 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;
}
} }
}; };

View file

@ -1,13 +1,17 @@
source common.sh source common.sh
STORE_INFO=$(nix store ping 2>&1) STORE_INFO=$(nix store ping 2>&1)
STORE_INFO_JSON=$(nix store ping --json)
echo "$STORE_INFO" | grep "Store URL: ${NIX_REMOTE}" echo "$STORE_INFO" | grep "Store URL: ${NIX_REMOTE}"
if [[ -v NIX_DAEMON_PACKAGE ]] && isDaemonNewer "2.7.0pre20220126"; then if [[ -v NIX_DAEMON_PACKAGE ]] && isDaemonNewer "2.7.0pre20220126"; then
DAEMON_VERSION=$($NIX_DAEMON_PACKAGE/bin/nix-daemon --version | cut -d' ' -f3) DAEMON_VERSION=$($NIX_DAEMON_PACKAGE/bin/nix-daemon --version | cut -d' ' -f3)
echo "$STORE_INFO" | grep "Version: $DAEMON_VERSION" echo "$STORE_INFO" | grep "Version: $DAEMON_VERSION"
[[ "$(echo "$STORE_INFO_JSON" | jq -r ".version")" == "$DAEMON_VERSION" ]]
fi fi
expect 127 NIX_REMOTE=unix:$PWD/store nix store ping || \ expect 127 NIX_REMOTE=unix:$PWD/store nix store ping || \
fail "nix store ping on a non-existent store should fail" fail "nix store ping on a non-existent store should fail"
[[ "$(echo "$STORE_INFO_JSON" | jq -r ".url")" == "${NIX_REMOTE:-local}" ]]