5#include "lix/libutil/json-fwd.hh"
14typedef std::vector<FlakeId> InputPath;
23struct Node : std::enable_shared_from_this<Node>
25 typedef std::variant<ref<LockedNode>, InputPath> Edge;
27 std::map<FlakeId, Edge> inputs;
44 : lockedRef(lockedRef), originalRef(originalRef), isFlake(isFlake)
47 LockedNode(
const JSON & json);
57 LockFile(
const JSON & json,
const Path & path);
59 typedef std::map<ref<const Node>, std::string> KeyMap;
63 std::string to_string()
const;
65 static LockFile read(
const Path & path);
67 void write(
const Path & path)
const;
74 bool operator ==(
const LockFile & other)
const;
77 bool operator !=(
const LockFile & other)
const;
79 std::shared_ptr<Node> findInput(
const InputPath & path);
81 std::map<InputPath, Node::Edge> getAllInputs()
const;
83 static std::string diff(
const LockFile & oldLocks,
const LockFile & newLocks);
91std::ostream & operator <<(std::ostream & stream,
const LockFile & lockFile);
93InputPath parseInputPath(std::string_view s);
95std::string printInputPath(
const InputPath & path);
Definition store-api.hh:195
Definition flakeref.hh:35
Definition lockfile.hh:53
std::optional< FlakeRef > isUnlocked() const
Definition lockfile.cc:212
void check()
Definition lockfile.cc:349
Definition lockfile.hh:36
Definition lockfile.hh:24
std::string Path
Definition types.hh:28