mirror of
https://github.com/NixOS/nix
synced 2025-06-27 16:51:15 +02:00
Change lock file format to use an attribute representation of flake refs rather than URLs
This commit is contained in:
parent
dbefe9e6b8
commit
8414685c0f
12 changed files with 293 additions and 39 deletions
|
@ -14,12 +14,19 @@ const static std::string subDirElemRegex = "(?:[a-zA-Z0-9_-]+[a-zA-Z0-9._-]*)";
|
|||
const static std::string subDirRegex = subDirElemRegex + "(?:/" + subDirElemRegex + ")*";
|
||||
#endif
|
||||
|
||||
|
||||
std::string FlakeRef::to_string() const
|
||||
{
|
||||
return input->to_string();
|
||||
}
|
||||
|
||||
fetchers::Input::Attrs FlakeRef::toAttrs() const
|
||||
{
|
||||
auto attrs = input->toAttrs();
|
||||
if (subdir != "")
|
||||
attrs.emplace("subdir", subdir);
|
||||
return attrs;
|
||||
}
|
||||
|
||||
bool FlakeRef::isDirect() const
|
||||
{
|
||||
return input->isDirect();
|
||||
|
@ -36,7 +43,7 @@ std::ostream & operator << (std::ostream & str, const FlakeRef & flakeRef)
|
|||
return str;
|
||||
}
|
||||
|
||||
bool FlakeRef::operator==(const FlakeRef & other) const
|
||||
bool FlakeRef::operator ==(const FlakeRef & other) const
|
||||
{
|
||||
return *input == *other.input && subdir == other.subdir;
|
||||
}
|
||||
|
@ -166,4 +173,13 @@ std::optional<std::pair<FlakeRef, std::string>> maybeParseFlakeRefWithFragment(
|
|||
}
|
||||
}
|
||||
|
||||
FlakeRef FlakeRef::fromAttrs(const fetchers::Input::Attrs & attrs)
|
||||
{
|
||||
auto attrs2(attrs);
|
||||
attrs2.erase("subdir");
|
||||
return FlakeRef(
|
||||
fetchers::inputFromAttrs(attrs2),
|
||||
fetchers::maybeGetStrAttr(attrs, "subdir").value_or(""));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue