forked from lix-project/lix
Add a name to the stores
So that it can be printed by `nix describe-stores`
This commit is contained in:
parent
f24f0888f9
commit
b73adacc1e
|
@ -2872,11 +2872,16 @@ void DerivationGoal::writeStructuredAttrs()
|
||||||
chownToBuilder(tmpDir + "/.attrs.sh");
|
chownToBuilder(tmpDir + "/.attrs.sh");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct RestrictedStoreConfig : LocalFSStoreConfig
|
||||||
|
{
|
||||||
|
using LocalFSStoreConfig::LocalFSStoreConfig;
|
||||||
|
const std::string name() { return "Restricted Store"; }
|
||||||
|
};
|
||||||
|
|
||||||
/* A wrapper around LocalStore that only allows building/querying of
|
/* A wrapper around LocalStore that only allows building/querying of
|
||||||
paths that are in the input closures of the build or were added via
|
paths that are in the input closures of the build or were added via
|
||||||
recursive Nix calls. */
|
recursive Nix calls. */
|
||||||
struct RestrictedStore : public LocalFSStore
|
struct RestrictedStore : public LocalFSStore, public virtual RestrictedStoreConfig
|
||||||
{
|
{
|
||||||
ref<LocalStore> next;
|
ref<LocalStore> next;
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,8 @@ namespace nix {
|
||||||
|
|
||||||
struct DummyStoreConfig : virtual StoreConfig {
|
struct DummyStoreConfig : virtual StoreConfig {
|
||||||
using StoreConfig::StoreConfig;
|
using StoreConfig::StoreConfig;
|
||||||
|
|
||||||
|
const std::string name() override { return "Dummy Store"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DummyStore : public Store, public virtual DummyStoreConfig
|
struct DummyStore : public Store, public virtual DummyStoreConfig
|
||||||
|
|
|
@ -10,6 +10,8 @@ MakeError(UploadToHTTP, Error);
|
||||||
struct HttpBinaryCacheStoreConfig : virtual BinaryCacheStoreConfig
|
struct HttpBinaryCacheStoreConfig : virtual BinaryCacheStoreConfig
|
||||||
{
|
{
|
||||||
using BinaryCacheStoreConfig::BinaryCacheStoreConfig;
|
using BinaryCacheStoreConfig::BinaryCacheStoreConfig;
|
||||||
|
|
||||||
|
const std::string name() override { return "Http Binary Cache Store"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class HttpBinaryCacheStore : public BinaryCacheStore, public HttpBinaryCacheStoreConfig
|
class HttpBinaryCacheStore : public BinaryCacheStore, public HttpBinaryCacheStoreConfig
|
||||||
|
|
|
@ -17,6 +17,8 @@ struct LegacySSHStoreConfig : virtual StoreConfig
|
||||||
const Setting<bool> compress{this, false, "compress", "whether to compress the connection"};
|
const Setting<bool> compress{this, false, "compress", "whether to compress the connection"};
|
||||||
const Setting<Path> remoteProgram{this, "nix-store", "remote-program", "path to the nix-store executable on the remote system"};
|
const Setting<Path> remoteProgram{this, "nix-store", "remote-program", "path to the nix-store executable on the remote system"};
|
||||||
const Setting<std::string> remoteStore{this, "", "remote-store", "URI of the store on the remote system"};
|
const Setting<std::string> remoteStore{this, "", "remote-store", "URI of the store on the remote system"};
|
||||||
|
|
||||||
|
const std::string name() override { return "Legacy SSH Store"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LegacySSHStore : public Store, public virtual LegacySSHStoreConfig
|
struct LegacySSHStore : public Store, public virtual LegacySSHStoreConfig
|
||||||
|
|
|
@ -7,6 +7,8 @@ namespace nix {
|
||||||
struct LocalBinaryCacheStoreConfig : virtual BinaryCacheStoreConfig
|
struct LocalBinaryCacheStoreConfig : virtual BinaryCacheStoreConfig
|
||||||
{
|
{
|
||||||
using BinaryCacheStoreConfig::BinaryCacheStoreConfig;
|
using BinaryCacheStoreConfig::BinaryCacheStoreConfig;
|
||||||
|
|
||||||
|
const std::string name() override { return "Local Binary Cache Store"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class LocalBinaryCacheStore : public BinaryCacheStore, public virtual LocalBinaryCacheStoreConfig
|
class LocalBinaryCacheStore : public BinaryCacheStore, public virtual LocalBinaryCacheStoreConfig
|
||||||
|
|
|
@ -37,6 +37,8 @@ struct LocalStoreConfig : virtual LocalFSStoreConfig
|
||||||
Setting<bool> requireSigs{(StoreConfig*) this,
|
Setting<bool> requireSigs{(StoreConfig*) this,
|
||||||
settings.requireSigs,
|
settings.requireSigs,
|
||||||
"require-sigs", "whether store paths should have a trusted signature on import"};
|
"require-sigs", "whether store paths should have a trusted signature on import"};
|
||||||
|
|
||||||
|
const std::string name() override { return "Local Store"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -158,6 +158,8 @@ struct UDSRemoteStoreConfig : virtual LocalFSStoreConfig, virtual RemoteStoreCon
|
||||||
: UDSRemoteStoreConfig(Store::Params({}))
|
: UDSRemoteStoreConfig(Store::Params({}))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const std::string name() override { return "Local Daemon Store"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class UDSRemoteStore : public LocalFSStore, public RemoteStore, public virtual UDSRemoteStoreConfig
|
class UDSRemoteStore : public LocalFSStore, public RemoteStore, public virtual UDSRemoteStoreConfig
|
||||||
|
|
|
@ -186,6 +186,8 @@ struct S3BinaryCacheStoreConfig : virtual BinaryCacheStoreConfig
|
||||||
this, false, "multipart-upload", "whether to use multi-part uploads"};
|
this, false, "multipart-upload", "whether to use multi-part uploads"};
|
||||||
const Setting<uint64_t> bufferSize{
|
const Setting<uint64_t> bufferSize{
|
||||||
this, 5 * 1024 * 1024, "buffer-size", "size (in bytes) of each part in multi-part uploads"};
|
this, 5 * 1024 * 1024, "buffer-size", "size (in bytes) of each part in multi-part uploads"};
|
||||||
|
|
||||||
|
const std::string name() override { return "S3 Binary Cache Store"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore, virtual S3BinaryCacheStoreConfig
|
struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore, virtual S3BinaryCacheStoreConfig
|
||||||
|
|
|
@ -16,6 +16,8 @@ struct SSHStoreConfig : virtual RemoteStoreConfig
|
||||||
const Setting<bool> compress{(StoreConfig*) this, false, "compress", "whether to compress the connection"};
|
const Setting<bool> compress{(StoreConfig*) this, false, "compress", "whether to compress the connection"};
|
||||||
const Setting<Path> remoteProgram{(StoreConfig*) this, "nix-daemon", "remote-program", "path to the nix-daemon executable on the remote system"};
|
const Setting<Path> remoteProgram{(StoreConfig*) this, "nix-daemon", "remote-program", "path to the nix-daemon executable on the remote system"};
|
||||||
const Setting<std::string> remoteStore{(StoreConfig*) this, "", "remote-store", "URI of the store on the remote system"};
|
const Setting<std::string> remoteStore{(StoreConfig*) this, "", "remote-store", "URI of the store on the remote system"};
|
||||||
|
|
||||||
|
const std::string name() override { return "SSH Store"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class SSHStore : public virtual RemoteStore, public virtual SSHStoreConfig
|
class SSHStore : public virtual RemoteStore, public virtual SSHStoreConfig
|
||||||
|
|
|
@ -194,6 +194,7 @@ struct StoreConfig : public Config
|
||||||
*/
|
*/
|
||||||
StoreConfig() { assert(false); }
|
StoreConfig() { assert(false); }
|
||||||
|
|
||||||
|
virtual const std::string name() = 0;
|
||||||
|
|
||||||
const PathSetting storeDir_{this, false, settings.nixStore,
|
const PathSetting storeDir_{this, false, settings.nixStore,
|
||||||
"store", "path to the Nix store"};
|
"store", "path to the Nix store"};
|
||||||
|
|
|
@ -18,13 +18,14 @@ struct CmdDescribeStores : Command, MixJSON
|
||||||
|
|
||||||
void run() override
|
void run() override
|
||||||
{
|
{
|
||||||
|
auto res = nlohmann::json::object();
|
||||||
|
for (auto & implem : *Implementations::registered) {
|
||||||
|
auto storeConfig = implem.getConfig();
|
||||||
|
auto storeName = storeConfig->name();
|
||||||
|
res[storeName] = storeConfig->toJSON();
|
||||||
|
}
|
||||||
if (json) {
|
if (json) {
|
||||||
auto res = nlohmann::json::array();
|
std::cout << res;
|
||||||
for (auto & implem : *Implementations::registered) {
|
|
||||||
auto storeConfig = implem.getConfig();
|
|
||||||
std::cout << storeConfig->toJSON().dump() << std::endl;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
throw Error("Only json is available for describe-stores");
|
throw Error("Only json is available for describe-stores");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue