mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-22 22:16:16 +02:00
parent
bc4df3394d
commit
0327580e54
1 changed files with 7 additions and 4 deletions
|
@ -78,7 +78,7 @@ LockFile::LockFile(const nlohmann::json & json, const Path & path)
|
||||||
{
|
{
|
||||||
if (jsonNode.find("inputs") == jsonNode.end()) return;
|
if (jsonNode.find("inputs") == jsonNode.end()) return;
|
||||||
for (auto & i : jsonNode["inputs"].items()) {
|
for (auto & i : jsonNode["inputs"].items()) {
|
||||||
if (i.value().is_array()) {
|
if (i.value().is_array()) { // FIXME: remove, obsolete
|
||||||
InputPath path;
|
InputPath path;
|
||||||
for (auto & j : i.value())
|
for (auto & j : i.value())
|
||||||
path.push_back(j);
|
path.push_back(j);
|
||||||
|
@ -87,10 +87,13 @@ LockFile::LockFile(const nlohmann::json & json, const Path & path)
|
||||||
std::string inputKey = i.value();
|
std::string inputKey = i.value();
|
||||||
auto k = nodeMap.find(inputKey);
|
auto k = nodeMap.find(inputKey);
|
||||||
if (k == nodeMap.end()) {
|
if (k == nodeMap.end()) {
|
||||||
auto jsonNode2 = json["nodes"][inputKey];
|
auto nodes = json["nodes"];
|
||||||
auto input = std::make_shared<LockedNode>(jsonNode2);
|
auto jsonNode2 = nodes.find(inputKey);
|
||||||
|
if (jsonNode2 == nodes.end())
|
||||||
|
throw Error("lock file references missing node '%s'", inputKey);
|
||||||
|
auto input = std::make_shared<LockedNode>(*jsonNode2);
|
||||||
k = nodeMap.insert_or_assign(inputKey, input).first;
|
k = nodeMap.insert_or_assign(inputKey, input).first;
|
||||||
getInputs(*input, jsonNode2);
|
getInputs(*input, *jsonNode2);
|
||||||
}
|
}
|
||||||
if (auto child = std::dynamic_pointer_cast<LockedNode>(k->second))
|
if (auto child = std::dynamic_pointer_cast<LockedNode>(k->second))
|
||||||
node.inputs.insert_or_assign(i.key(), child);
|
node.inputs.insert_or_assign(i.key(), child);
|
||||||
|
|
Loading…
Reference in a new issue