1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-06 05:01:48 +02:00

Fix --override-flake and add a test

This commit is contained in:
Eelco Dolstra 2020-01-22 20:00:58 +01:00
parent 90d55ed275
commit b5c9dbc84f
5 changed files with 34 additions and 15 deletions

View file

@ -11,11 +11,10 @@ namespace nix::fetchers {
std::shared_ptr<Registry> Registry::read(
const Path & path, RegistryType type)
{
auto registry = std::make_shared<Registry>();
registry->type = type;
auto registry = std::make_shared<Registry>(type);
if (!pathExists(path))
return std::make_shared<Registry>();
return std::make_shared<Registry>(type);
auto json = nlohmann::json::parse(readFile(path));
@ -74,17 +73,20 @@ std::shared_ptr<Registry> getUserRegistry()
return Registry::read(getUserRegistryPath(), Registry::User);
}
#if 0
std::shared_ptr<Registry> getFlagRegistry(RegistryOverrides registryOverrides)
static std::shared_ptr<Registry> flagRegistry =
std::make_shared<Registry>(Registry::Flag);
std::shared_ptr<Registry> getFlagRegistry()
{
auto flagRegistry = std::make_shared<Registry>();
for (auto const & x : registryOverrides)
flagRegistry->entries.insert_or_assign(
parseFlakeRef2(x.first),
parseFlakeRef2(x.second));
return flagRegistry;
}
#endif
void overrideRegistry(
const std::shared_ptr<const Input> & from,
const std::shared_ptr<const Input> & to)
{
flagRegistry->add(from, to);
}
static std::shared_ptr<Registry> getGlobalRegistry(ref<Store> store)
{
@ -107,7 +109,7 @@ static std::shared_ptr<Registry> getGlobalRegistry(ref<Store> store)
Registries getRegistries(ref<Store> store)
{
Registries registries;
//registries.push_back(getFlagRegistry(registryOverrides));
registries.push_back(getFlagRegistry());
registries.push_back(getUserRegistry());
registries.push_back(getGlobalRegistry(store));
return registries;

View file

@ -20,6 +20,10 @@ struct Registry
std::vector<std::pair<std::shared_ptr<const Input>, std::shared_ptr<const Input>>> entries;
Registry(RegistryType type)
: type(type)
{ }
static std::shared_ptr<Registry> read(
const Path & path, RegistryType type);
@ -40,6 +44,10 @@ Path getUserRegistryPath();
Registries getRegistries(ref<Store> store);
void overrideRegistry(
const std::shared_ptr<const Input> & from,
const std::shared_ptr<const Input> & to);
std::shared_ptr<const Input> lookupInRegistries(
ref<Store> store,
std::shared_ptr<const Input> input);