forked from lix-project/lix
Merge branch 'store-visited' of https://github.com/mkenigs/nix into flakes
This commit is contained in:
commit
c3eff22f46
|
@ -158,20 +158,26 @@ struct CmdFlakeListInputs : FlakeCommand, MixJSON
|
||||||
else {
|
else {
|
||||||
logger->stdout("%s", flake.flake.lockedRef);
|
logger->stdout("%s", flake.flake.lockedRef);
|
||||||
|
|
||||||
|
std::unordered_set<std::shared_ptr<Node>> visited;
|
||||||
|
|
||||||
std::function<void(const Node & node, const std::string & prefix)> recurse;
|
std::function<void(const Node & node, const std::string & prefix)> recurse;
|
||||||
|
|
||||||
recurse = [&](const Node & node, const std::string & prefix)
|
recurse = [&](const Node & node, const std::string & prefix)
|
||||||
{
|
{
|
||||||
for (const auto & [i, input] : enumerate(node.inputs)) {
|
for (const auto & [i, input] : enumerate(node.inputs)) {
|
||||||
//auto tree2 = tree.child(i + 1 == inputs.inputs.size());
|
bool firstVisit = visited.insert(input.second).second;
|
||||||
bool last = i + 1 == node.inputs.size();
|
bool last = i + 1 == node.inputs.size();
|
||||||
|
auto lockedNode = std::dynamic_pointer_cast<const LockedNode>(input.second);
|
||||||
|
|
||||||
logger->stdout("%s" ANSI_BOLD "%s" ANSI_NORMAL ": %s",
|
logger->stdout("%s" ANSI_BOLD "%s" ANSI_NORMAL ": %s",
|
||||||
prefix + (last ? treeLast : treeConn), input.first,
|
prefix + (last ? treeLast : treeConn), input.first,
|
||||||
std::dynamic_pointer_cast<const LockedNode>(input.second)->lockedRef);
|
lockedNode ? lockedNode->lockedRef : flake.flake.lockedRef);
|
||||||
recurse(*input.second, prefix + (last ? treeNull : treeLine));
|
|
||||||
|
if (firstVisit) recurse(*input.second, prefix + (last ? treeNull : treeLine));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
visited.insert(flake.lockFile.root);
|
||||||
recurse(*flake.lockFile.root, "");
|
recurse(*flake.lockFile.root, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -661,3 +661,6 @@ sed -i $flakeB/flake.nix -e 's/456/789/'
|
||||||
git -C $flakeB commit -a -m 'Foo'
|
git -C $flakeB commit -a -m 'Foo'
|
||||||
|
|
||||||
[[ $(nix eval --update-input b $flakeA#foo) = 1912 ]]
|
[[ $(nix eval --update-input b $flakeA#foo) = 1912 ]]
|
||||||
|
|
||||||
|
# Test list-inputs with circular dependencies
|
||||||
|
nix flake list-inputs $flakeA
|
Loading…
Reference in a new issue