forked from lix-project/lix
3b57181f8e
Add a new `init()` method to the `Store` class that is supposed to handle all the effectful initialisation needed to set-up the store. The constructor should remain side-effect free and just initialize the c++ data structure. The goal behind that is that we can create “dummy” instances of each store to query static properties about it (the parameters it accepts for example)
60 lines
1.7 KiB
C++
60 lines
1.7 KiB
C++
#include "store-api.hh"
|
|
|
|
namespace nix {
|
|
|
|
struct DummyStore : public Store
|
|
{
|
|
DummyStore(const std::string uri, const Params & params)
|
|
: DummyStore(params)
|
|
{ }
|
|
|
|
DummyStore(const Params & params)
|
|
: Store(params)
|
|
{ }
|
|
|
|
string getUri() override
|
|
{
|
|
return uriPrefixes()[0] + "://";
|
|
}
|
|
|
|
void queryPathInfoUncached(const StorePath & path,
|
|
Callback<std::shared_ptr<const ValidPathInfo>> callback) noexcept override
|
|
{
|
|
callback(nullptr);
|
|
}
|
|
|
|
static std::vector<std::string> uriPrefixes() {
|
|
return {"dummy"};
|
|
}
|
|
|
|
std::optional<StorePath> queryPathFromHashPart(const std::string & hashPart) override
|
|
{ unsupported("queryPathFromHashPart"); }
|
|
|
|
void addToStore(const ValidPathInfo & info, Source & source,
|
|
RepairFlag repair, CheckSigsFlag checkSigs) override
|
|
{ unsupported("addToStore"); }
|
|
|
|
StorePath addToStore(const string & name, const Path & srcPath,
|
|
FileIngestionMethod method, HashType hashAlgo,
|
|
PathFilter & filter, RepairFlag repair) override
|
|
{ unsupported("addToStore"); }
|
|
|
|
StorePath addTextToStore(const string & name, const string & s,
|
|
const StorePathSet & references, RepairFlag repair) override
|
|
{ unsupported("addTextToStore"); }
|
|
|
|
void narFromPath(const StorePath & path, Sink & sink) override
|
|
{ unsupported("narFromPath"); }
|
|
|
|
void ensurePath(const StorePath & path) override
|
|
{ unsupported("ensurePath"); }
|
|
|
|
BuildResult buildDerivation(const StorePath & drvPath, const BasicDerivation & drv,
|
|
BuildMode buildMode) override
|
|
{ unsupported("buildDerivation"); }
|
|
};
|
|
|
|
static RegisterStoreImplementation<DummyStore> regStore;
|
|
|
|
}
|