forked from lix-project/lix
downloadFile(): Use expired file if the download fails
This commit is contained in:
parent
f6ddf48882
commit
1c127e6a82
2 changed files with 19 additions and 6 deletions
|
@ -25,17 +25,31 @@ DownloadFileResult downloadFile(
|
|||
|
||||
auto cached = getCache()->lookupExpired(store, inAttrs);
|
||||
|
||||
if (cached && !cached->expired)
|
||||
auto useCached = [&]() -> DownloadFileResult
|
||||
{
|
||||
return {
|
||||
.storePath = std::move(cached->storePath),
|
||||
.etag = getStrAttr(cached->infoAttrs, "etag"),
|
||||
.effectiveUrl = getStrAttr(cached->infoAttrs, "url")
|
||||
};
|
||||
};
|
||||
|
||||
if (cached && !cached->expired)
|
||||
return useCached();
|
||||
|
||||
DownloadRequest request(url);
|
||||
if (cached)
|
||||
request.expectedETag = getStrAttr(cached->infoAttrs, "etag");
|
||||
auto res = getDownloader()->download(request);
|
||||
DownloadResult res;
|
||||
try {
|
||||
res = getDownloader()->download(request);
|
||||
} catch (DownloadError & e) {
|
||||
if (cached) {
|
||||
warn("%s; using cached version", e.msg());
|
||||
return useCached();
|
||||
} else
|
||||
throw;
|
||||
}
|
||||
|
||||
// FIXME: write to temporary file.
|
||||
|
||||
|
|
|
@ -268,10 +268,9 @@ nix build -o $TEST_ROOT/result $flake3Dir#sth 2>&1 | grep 'unsupported edition'
|
|||
|
||||
# Test whether registry caching works.
|
||||
nix flake list --flake-registry file://$registry | grep -q flake3
|
||||
# FIXME
|
||||
#mv $registry $registry.tmp
|
||||
#nix flake list --flake-registry file://$registry --refresh | grep -q flake3
|
||||
#mv $registry.tmp $registry
|
||||
mv $registry $registry.tmp
|
||||
nix flake list --flake-registry file://$registry --refresh | grep -q flake3
|
||||
mv $registry.tmp $registry
|
||||
|
||||
# Test whether flakes are registered as GC roots for offline use.
|
||||
# FIXME: use tarballs rather than git.
|
||||
|
|
Loading…
Reference in a new issue