Push `addToStoreFromDump` `unsupported(...)` down `Store` class hierarchy
Instead of having it be the default method in `Store` itself, have it be the implementation in `DummyStore` and `LegacySSHStore`. Then just the implementations which fail to provide the method pay the "penalty" of dealing with the icky `unimplemented` function for non-compliance. Picks up where #8217. Getting close to no `unsupported` in the `Store` interface itself! More progress on issue #5729.
This commit is contained in:
parent
b5ed36e663
commit
574db83504
|
@ -58,6 +58,15 @@ struct DummyStore : public virtual DummyStoreConfig, public virtual Store
|
||||||
RepairFlag repair, CheckSigsFlag checkSigs) override
|
RepairFlag repair, CheckSigsFlag checkSigs) override
|
||||||
{ unsupported("addToStore"); }
|
{ unsupported("addToStore"); }
|
||||||
|
|
||||||
|
virtual StorePath addToStoreFromDump(
|
||||||
|
Source & dump,
|
||||||
|
std::string_view name,
|
||||||
|
ContentAddressMethod method = FileIngestionMethod::Recursive,
|
||||||
|
HashAlgorithm hashAlgo = HashAlgorithm::SHA256,
|
||||||
|
const StorePathSet & references = StorePathSet(),
|
||||||
|
RepairFlag repair = NoRepair) override
|
||||||
|
{ unsupported("addToStore"); }
|
||||||
|
|
||||||
void narFromPath(const StorePath & path, Sink & sink) override
|
void narFromPath(const StorePath & path, Sink & sink) override
|
||||||
{ unsupported("narFromPath"); }
|
{ unsupported("narFromPath"); }
|
||||||
|
|
||||||
|
|
|
@ -69,6 +69,15 @@ struct LegacySSHStore : public virtual LegacySSHStoreConfig, public virtual Stor
|
||||||
RepairFlag repair) override
|
RepairFlag repair) override
|
||||||
{ unsupported("addToStore"); }
|
{ unsupported("addToStore"); }
|
||||||
|
|
||||||
|
virtual StorePath addToStoreFromDump(
|
||||||
|
Source & dump,
|
||||||
|
std::string_view name,
|
||||||
|
ContentAddressMethod method = FileIngestionMethod::Recursive,
|
||||||
|
HashAlgorithm hashAlgo = HashAlgorithm::SHA256,
|
||||||
|
const StorePathSet & references = StorePathSet(),
|
||||||
|
RepairFlag repair = NoRepair) override
|
||||||
|
{ unsupported("addToStore"); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void putBuildSettings(Connection & conn);
|
void putBuildSettings(Connection & conn);
|
||||||
|
|
|
@ -466,8 +466,7 @@ public:
|
||||||
ContentAddressMethod method = FileIngestionMethod::Recursive,
|
ContentAddressMethod method = FileIngestionMethod::Recursive,
|
||||||
HashAlgorithm hashAlgo = HashAlgorithm::SHA256,
|
HashAlgorithm hashAlgo = HashAlgorithm::SHA256,
|
||||||
const StorePathSet & references = StorePathSet(),
|
const StorePathSet & references = StorePathSet(),
|
||||||
RepairFlag repair = NoRepair)
|
RepairFlag repair = NoRepair) = 0;
|
||||||
{ unsupported("addToStoreFromDump"); }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a mapping indicating that `deriver!outputName` maps to the output path
|
* Add a mapping indicating that `deriver!outputName` maps to the output path
|
||||||
|
|
Loading…
Reference in New Issue