aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/flake/flake.cc
diff options
context:
space:
mode:
authorMaximilian Bosch <maximilian@mbosch.me>2022-07-12 11:25:33 +0200
committerMaximilian Bosch <maximilian@mbosch.me>2022-07-12 11:25:33 +0200
commit1f771065f1353ba462d73641b047b4fb2f02f482 (patch)
treea9b72004817df2ec28ea0f7c6e43bacffa63b131 /src/libexpr/flake/flake.cc
parent411111a3bc0e47520797106e1697aaa11631a101 (diff)
Move follows-check into its own function
Diffstat (limited to 'src/libexpr/flake/flake.cc')
-rw-r--r--src/libexpr/flake/flake.cc47
1 files changed, 30 insertions, 17 deletions
diff --git a/src/libexpr/flake/flake.cc b/src/libexpr/flake/flake.cc
index c59a42d56..906e11251 100644
--- a/src/libexpr/flake/flake.cc
+++ b/src/libexpr/flake/flake.cc
@@ -353,26 +353,15 @@ LockedFlake lockFlake(
std::vector<FlakeRef> parents;
std::function<void(
- const FlakeInputs & flakeInputs,
- std::shared_ptr<Node> node,
const InputPath & inputPathPrefix,
- std::shared_ptr<const Node> oldNode,
- const InputPath & lockRootPath,
- const Path & parentPath,
- bool trustLock)>
- computeLocks;
+ const FlakeInputs & flakeInputs
+ )>
+ checkFollowsDeclarations;
- computeLocks = [&](
- const FlakeInputs & flakeInputs,
- std::shared_ptr<Node> node,
+ checkFollowsDeclarations = [&](
const InputPath & inputPathPrefix,
- std::shared_ptr<const Node> oldNode,
- const InputPath & lockRootPath,
- const Path & parentPath,
- bool trustLock)
- {
- debug("computing lock file node '%s'", printInputPath(inputPathPrefix));
-
+ const FlakeInputs & flakeInputs
+ ) {
for (auto [inputPath, inputOverride] : overrides) {
auto inputPath2(inputPath);
auto follow = inputPath2.back();
@@ -394,6 +383,30 @@ LockedFlake lockFlake(
);
}
}
+ };
+
+ std::function<void(
+ const FlakeInputs & flakeInputs,
+ std::shared_ptr<Node> node,
+ const InputPath & inputPathPrefix,
+ std::shared_ptr<const Node> oldNode,
+ const InputPath & lockRootPath,
+ const Path & parentPath,
+ bool trustLock)>
+ computeLocks;
+
+ computeLocks = [&](
+ const FlakeInputs & flakeInputs,
+ std::shared_ptr<Node> node,
+ const InputPath & inputPathPrefix,
+ std::shared_ptr<const Node> oldNode,
+ const InputPath & lockRootPath,
+ const Path & parentPath,
+ bool trustLock)
+ {
+ debug("computing lock file node '%s'", printInputPath(inputPathPrefix));
+
+ checkFollowsDeclarations(inputPathPrefix, flakeInputs);
/* Get the overrides (i.e. attributes of the form
'inputs.nixops.inputs.nixpkgs.url = ...'). */