Fix issue with unhandled error on Stat

If stat returns an error other than the directory not existing
it was unhandled. When IsDir is called in one of these situations
it causes a panic.

Closes #8181

Signed-off-by: Matt Farina <matt@mattfarina.com>
pull/8188/head
Matt Farina 5 years ago
parent 25aa9d0e65
commit f182ebc11c
No known key found for this signature in database
GPG Key ID: 9436E80BFBA46909

@ -106,12 +106,17 @@ func Save(c *chart.Chart, outDir string) (string, error) {
filename := fmt.Sprintf("%s-%s.tgz", c.Name(), c.Metadata.Version)
filename = filepath.Join(outDir, filename)
if stat, err := os.Stat(filepath.Dir(filename)); os.IsNotExist(err) {
if err := os.MkdirAll(filepath.Dir(filename), 0755); err != nil {
return "", err
dir := filepath.Dir(filename)
if stat, err := os.Stat(dir); err != nil {
if os.IsNotExist(err) {
if err2 := os.MkdirAll(dir, 0755); err2 != nil {
return "", err2
}
} else {
return "", errors.Wrapf(err, "stat %s", dir)
}
} else if !stat.IsDir() {
return "", errors.Errorf("is not a directory: %s", filepath.Dir(filename))
return "", errors.Errorf("is not a directory: %s", dir)
}
f, err := os.Create(filename)

Loading…
Cancel
Save