Re-use cache when downloading charts

Previously, when a chart has been downloaded, it had been put in the cache. However, this has happened unconditionally,
so that the cache hasn't actually been used for anything. This patch attempts to fix this and checks if the target file
exists in the cache before downloading.

Fixes: #12607, #12602

Signed-off-by: Nikolai Prokoschenko <nikolai.prokoschenko@kurzdigital.com>
pull/13270/head
Nikolai Prokoschenko 1 year ago
parent a6f5844fb4
commit 5e9c2268e6

@ -92,25 +92,28 @@ func (c *ChartDownloader) DownloadTo(ref, version, dest string) (string, *proven
return "", nil, err
}
g, err := c.Getters.ByScheme(u.Scheme)
if err != nil {
return "", nil, err
}
data, err := g.Get(u.String(), c.Options...)
if err != nil {
return "", nil, err
}
name := filepath.Base(u.Path)
if u.Scheme == registry.OCIScheme {
idx := strings.LastIndexByte(name, ':')
name = fmt.Sprintf("%s-%s.tgz", name[:idx], name[idx+1:])
}
g, err := c.Getters.ByScheme(u.Scheme)
if err != nil {
return "", nil, err
}
destfile := filepath.Join(dest, name)
if err := fileutil.AtomicWriteFile(destfile, data, 0644); err != nil {
return destfile, nil, err
_, err = os.Stat(destfile)
if err != nil {
data, err := g.Get(u.String(), c.Options...)
if err != nil {
return "", nil, err
}
if err := fileutil.AtomicWriteFile(destfile, data, 0644); err != nil {
return destfile, nil, err
}
}
// If provenance is requested, verify it.

Loading…
Cancel
Save