mirror of
https://github.com/NixOS/nix.git
synced 2025-12-22 00:41:08 +01:00
For example, instead of doing
#include "nix/store-config.hh"
#include "nix/derived-path.hh"
Now do
#include "nix/store/config.hh"
#include "nix/store/derived-path.hh"
This was originally planned in the issue, and also recent requested by
Eelco.
Most of the change is purely mechanical. There is just one small
additional issue. See how, in the example above, we took this
opportunity to also turn `<comp>-config.hh` into `<comp>/config.hh`.
Well, there was already a `nix/util/config.{cc,hh}`. Even though there
is not a public configuration header for libutil (which also would be
called `nix/util/config.{cc,hh}`) that's still confusing, To avoid any
such confusion, we renamed that to `nix/util/configuration.{cc,hh}`.
Finally, note that the libflake headers already did this, so we didn't
need to do anything to them. We wouldn't want to mistakenly get
`nix/flake/flake/flake.hh`!
Progress on #7876
91 lines
2.7 KiB
C++
91 lines
2.7 KiB
C++
#include "nix/store/store-api.hh"
|
|
#include "nix/util/callback.hh"
|
|
|
|
namespace nix {
|
|
|
|
struct DummyStoreConfig : virtual StoreConfig {
|
|
using StoreConfig::StoreConfig;
|
|
|
|
DummyStoreConfig(std::string_view scheme, std::string_view authority, const Params & params)
|
|
: StoreConfig(params)
|
|
{
|
|
if (!authority.empty())
|
|
throw UsageError("`%s` store URIs must not contain an authority part %s", scheme, authority);
|
|
}
|
|
|
|
const std::string name() override { return "Dummy Store"; }
|
|
|
|
std::string doc() override
|
|
{
|
|
return
|
|
#include "dummy-store.md"
|
|
;
|
|
}
|
|
|
|
static std::set<std::string> uriSchemes() {
|
|
return {"dummy"};
|
|
}
|
|
};
|
|
|
|
struct DummyStore : public virtual DummyStoreConfig, public virtual Store
|
|
{
|
|
DummyStore(std::string_view scheme, std::string_view authority, const Params & params)
|
|
: StoreConfig(params)
|
|
, DummyStoreConfig(scheme, authority, params)
|
|
, Store(params)
|
|
{ }
|
|
|
|
DummyStore(const Params & params)
|
|
: DummyStore("dummy", "", params)
|
|
{ }
|
|
|
|
std::string getUri() override
|
|
{
|
|
return *uriSchemes().begin();
|
|
}
|
|
|
|
void queryPathInfoUncached(const StorePath & path,
|
|
Callback<std::shared_ptr<const ValidPathInfo>> callback) noexcept override
|
|
{
|
|
callback(nullptr);
|
|
}
|
|
|
|
/**
|
|
* The dummy store is incapable of *not* trusting! :)
|
|
*/
|
|
virtual std::optional<TrustedFlag> isTrustedClient() override
|
|
{
|
|
return Trusted;
|
|
}
|
|
|
|
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"); }
|
|
|
|
virtual StorePath addToStoreFromDump(
|
|
Source & dump,
|
|
std::string_view name,
|
|
FileSerialisationMethod dumpMethod = FileSerialisationMethod::NixArchive,
|
|
ContentAddressMethod hashMethod = FileIngestionMethod::NixArchive,
|
|
HashAlgorithm hashAlgo = HashAlgorithm::SHA256,
|
|
const StorePathSet & references = StorePathSet(),
|
|
RepairFlag repair = NoRepair) override
|
|
{ unsupported("addToStore"); }
|
|
|
|
void narFromPath(const StorePath & path, Sink & sink) override
|
|
{ unsupported("narFromPath"); }
|
|
|
|
void queryRealisationUncached(const DrvOutput &,
|
|
Callback<std::shared_ptr<const Realisation>> callback) noexcept override
|
|
{ callback(nullptr); }
|
|
|
|
virtual ref<SourceAccessor> getFSAccessor(bool requireValidPath) override
|
|
{ unsupported("getFSAccessor"); }
|
|
};
|
|
|
|
static RegisterStoreImplementation<DummyStore, DummyStoreConfig> regDummyStore;
|
|
|
|
}
|