nix flake deps: Print flake dependencies

This commit is contained in:
Eelco Dolstra 2019-05-22 13:57:19 +02:00
parent 70136a9bf4
commit 3e8ef9eb22

View file

@ -70,7 +70,7 @@ struct CmdFlakeList : EvalCommand
} }
}; };
void printFlakeInfo(Flake & flake, bool json) { void printFlakeInfo(const Flake & flake, bool json) {
if (json) { if (json) {
nlohmann::json j; nlohmann::json j;
j["id"] = flake.id; j["id"] = flake.id;
@ -98,7 +98,7 @@ void printFlakeInfo(Flake & flake, bool json) {
} }
} }
void printNonFlakeInfo(NonFlake & nonFlake, bool json) { void printNonFlakeInfo(const NonFlake & nonFlake, bool json) {
if (json) { if (json) {
nlohmann::json j; nlohmann::json j;
j["id"] = nonFlake.alias; j["id"] = nonFlake.alias;
@ -142,22 +142,22 @@ struct CmdFlakeDeps : FlakeCommand, MixJSON
auto evalState = getEvalState(); auto evalState = getEvalState();
evalState->addRegistryOverrides(registryOverrides); evalState->addRegistryOverrides(registryOverrides);
auto resFlake = resolveFlake();
std::queue<ResolvedFlake> todo; std::queue<ResolvedFlake> todo;
todo.push(resFlake); todo.push(resolveFlake());
while (!todo.empty()) { while (!todo.empty()) {
resFlake = todo.front(); auto resFlake = std::move(todo.front());
todo.pop(); todo.pop();
for (NonFlake & nonFlake : resFlake.nonFlakeDeps) for (auto & nonFlake : resFlake.nonFlakeDeps)
printNonFlakeInfo(nonFlake, json); printNonFlakeInfo(nonFlake, json);
for (auto info : resFlake.flakeDeps) for (auto & info : resFlake.flakeDeps) {
printFlakeInfo(info.second.flake, json);
todo.push(info.second); todo.push(info.second);
} }
} }
}
}; };
struct CmdFlakeUpdate : FlakeCommand struct CmdFlakeUpdate : FlakeCommand