mirror of
https://github.com/NixOS/nix.git
synced 2025-11-28 13:11:00 +01:00
Deduplicate listNar and MemorySourceAccessor::File
`listNar` did the not-so-pretty thing of going straight to JSON. Now it uses `MemorySourceAccessor::File`, or rather variations of it, to go to a C++ data type first, and only JSON second. To accomplish this we add some type parameters to the `File` data type. Actually, we need to do two rounds of this, because shallow NAR listings. There is `FileT` and `DirectoryT` accordingly.
This commit is contained in:
parent
ac36d74b66
commit
c4906741a1
8 changed files with 246 additions and 101 deletions
|
|
@ -208,7 +208,7 @@ ref<const ValidPathInfo> BinaryCacheStore::addToStoreCommon(
|
|||
if (config.writeNARListing) {
|
||||
nlohmann::json j = {
|
||||
{"version", 1},
|
||||
{"root", listNar(*narAccessor, CanonPath::root, true)},
|
||||
{"root", listNarDeep(*narAccessor, CanonPath::root)},
|
||||
};
|
||||
|
||||
upsertFile(std::string(info.path.hashPart()) + ".ls", j.dump(), "application/json");
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ ref<SourceAccessor> RemoteFSAccessor::addToCache(std::string_view hashPart, std:
|
|||
|
||||
if (cacheDir != "") {
|
||||
try {
|
||||
nlohmann::json j = listNar(*narAccessor, CanonPath::root, true);
|
||||
nlohmann::json j = listNarDeep(*narAccessor, CanonPath::root);
|
||||
writeFile(makeCacheFile(hashPart, "ls"), j.dump());
|
||||
} catch (...) {
|
||||
ignoreExceptionExceptInterrupt();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue