mirror of
https://github.com/NixOS/nix
synced 2025-06-28 22:01:15 +02:00
Put flake-related stuff in its own namespace
This commit is contained in:
parent
c356d034f3
commit
6e4a8c47f4
6 changed files with 62 additions and 42 deletions
|
@ -17,7 +17,10 @@ namespace nix {
|
|||
class Store;
|
||||
class EvalState;
|
||||
enum RepairFlag : bool;
|
||||
|
||||
namespace flake {
|
||||
struct FlakeRegistry;
|
||||
}
|
||||
|
||||
|
||||
typedef void (* PrimOpFun) (EvalState & state, const Pos & pos, Value * * args, Value & v);
|
||||
|
@ -323,12 +326,12 @@ private:
|
|||
|
||||
public:
|
||||
|
||||
const std::vector<std::shared_ptr<FlakeRegistry>> getFlakeRegistries();
|
||||
const std::vector<std::shared_ptr<flake::FlakeRegistry>> getFlakeRegistries();
|
||||
|
||||
std::shared_ptr<FlakeRegistry> getGlobalFlakeRegistry();
|
||||
std::shared_ptr<flake::FlakeRegistry> getGlobalFlakeRegistry();
|
||||
|
||||
private:
|
||||
std::shared_ptr<FlakeRegistry> _globalFlakeRegistry;
|
||||
std::shared_ptr<flake::FlakeRegistry> _globalFlakeRegistry;
|
||||
std::once_flag _globalFlakeRegistryInit;
|
||||
};
|
||||
|
||||
|
|
|
@ -14,6 +14,10 @@
|
|||
|
||||
namespace nix {
|
||||
|
||||
using namespace flake;
|
||||
|
||||
namespace flake {
|
||||
|
||||
/* Read a registry. */
|
||||
std::shared_ptr<FlakeRegistry> readRegistry(const Path & path)
|
||||
{
|
||||
|
@ -133,24 +137,6 @@ void writeLockFile(const LockFile & lockFile, const Path & path)
|
|||
writeFile(path, json.dump(4) + "\n"); // '4' = indentation in json file
|
||||
}
|
||||
|
||||
std::shared_ptr<FlakeRegistry> EvalState::getGlobalFlakeRegistry()
|
||||
{
|
||||
std::call_once(_globalFlakeRegistryInit, [&]() {
|
||||
auto path = evalSettings.flakeRegistry;
|
||||
|
||||
if (!hasPrefix(path, "/")) {
|
||||
CachedDownloadRequest request(evalSettings.flakeRegistry);
|
||||
request.name = "flake-registry.json";
|
||||
request.gcRoot = true;
|
||||
path = getDownloader()->downloadCached(store, request).path;
|
||||
}
|
||||
|
||||
_globalFlakeRegistry = readRegistry(path);
|
||||
});
|
||||
|
||||
return _globalFlakeRegistry;
|
||||
}
|
||||
|
||||
Path getUserRegistryPath()
|
||||
{
|
||||
return getHome() + "/.config/nix/registry.json";
|
||||
|
@ -170,17 +156,6 @@ std::shared_ptr<FlakeRegistry> getFlagRegistry(RegistryOverrides registryOverrid
|
|||
return flagRegistry;
|
||||
}
|
||||
|
||||
// This always returns a vector with flakeReg, userReg, globalReg.
|
||||
// If one of them doesn't exist, the registry is left empty but does exist.
|
||||
const Registries EvalState::getFlakeRegistries()
|
||||
{
|
||||
Registries registries;
|
||||
registries.push_back(getFlagRegistry(registryOverrides));
|
||||
registries.push_back(getUserRegistry());
|
||||
registries.push_back(getGlobalFlakeRegistry());
|
||||
return registries;
|
||||
}
|
||||
|
||||
static FlakeRef lookupFlake(EvalState & state, const FlakeRef & flakeRef, const Registries & registries,
|
||||
std::vector<FlakeRef> pastSearches = {});
|
||||
|
||||
|
@ -637,3 +612,34 @@ void gitCloneFlake(FlakeRef flakeRef, EvalState & state, Registries registries,
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
std::shared_ptr<flake::FlakeRegistry> EvalState::getGlobalFlakeRegistry()
|
||||
{
|
||||
std::call_once(_globalFlakeRegistryInit, [&]() {
|
||||
auto path = evalSettings.flakeRegistry;
|
||||
|
||||
if (!hasPrefix(path, "/")) {
|
||||
CachedDownloadRequest request(evalSettings.flakeRegistry);
|
||||
request.name = "flake-registry.json";
|
||||
request.gcRoot = true;
|
||||
path = getDownloader()->downloadCached(store, request).path;
|
||||
}
|
||||
|
||||
_globalFlakeRegistry = readRegistry(path);
|
||||
});
|
||||
|
||||
return _globalFlakeRegistry;
|
||||
}
|
||||
|
||||
// This always returns a vector with flakeReg, userReg, globalReg.
|
||||
// If one of them doesn't exist, the registry is left empty but does exist.
|
||||
const Registries EvalState::getFlakeRegistries()
|
||||
{
|
||||
Registries registries;
|
||||
registries.push_back(getFlagRegistry(registryOverrides));
|
||||
registries.push_back(getUserRegistry());
|
||||
registries.push_back(getGlobalFlakeRegistry());
|
||||
return registries;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,13 +5,15 @@
|
|||
|
||||
namespace nix {
|
||||
|
||||
struct Value;
|
||||
class EvalState;
|
||||
|
||||
namespace flake {
|
||||
|
||||
static const size_t FLAG_REGISTRY = 0;
|
||||
static const size_t USER_REGISTRY = 1;
|
||||
static const size_t GLOBAL_REGISTRY = 2;
|
||||
|
||||
struct Value;
|
||||
class EvalState;
|
||||
|
||||
struct FlakeRegistry
|
||||
{
|
||||
std::map<FlakeRef, FlakeRef> entries;
|
||||
|
@ -143,3 +145,5 @@ void updateLockFile(EvalState &, const FlakeRef & flakeRef, bool recreateLockFil
|
|||
void gitCloneFlake(FlakeRef flakeRef, EvalState &, Registries, const Path & destDir);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue