mirror of
https://github.com/NixOS/nix.git
synced 2025-11-21 09:49:36 +01:00
Rewrite StoreConfig::getUri in terms of new StoreConfig::getReference
Rather than having store implementations return a free-form URI string, have them return a `StoreReference`. This reflects that fact that this method is supposed to invert `resolveStoreConfig`, which goes from a `StoreReference` to some `StoreConfig` concrete derived class (based on the registry). `StoreConfig::getUri` is kept only as a convenience for the common case that we want to immediately render the `StoreReference`. A few tests were changed to use `local://` not `local`, since `StoreReference` does not encode the `local` and `daemon` shorthands (and instead desugars them to `local://` and `unix://` right away). I think that is fine. `local` and `daemon` still work as input.
This commit is contained in:
parent
be3a508b74
commit
3e7879e6df
22 changed files with 181 additions and 60 deletions
|
|
@ -439,15 +439,15 @@ LocalStore::~LocalStore()
|
|||
}
|
||||
}
|
||||
|
||||
std::string LocalStoreConfig::getUri() const
|
||||
StoreReference LocalStoreConfig::getReference() const
|
||||
{
|
||||
std::ostringstream oss;
|
||||
oss << *uriSchemes().begin();
|
||||
auto queryParams = getQueryParams();
|
||||
if (!queryParams.empty())
|
||||
oss << "?";
|
||||
oss << encodeQuery(queryParams);
|
||||
return std::move(oss).str();
|
||||
return {
|
||||
.variant =
|
||||
StoreReference::Specified{
|
||||
.scheme = *uriSchemes().begin(),
|
||||
},
|
||||
.params = getQueryParams(),
|
||||
};
|
||||
}
|
||||
|
||||
int LocalStore::getSchema()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue