diff --git a/main.go b/main.go index a3ec5c26..a2fae65a 100644 --- a/main.go +++ b/main.go @@ -242,14 +242,19 @@ func before(c *cli.Context) (*state.HelmState, helmexec.Interface, error) { labels := c.GlobalStringSlice("selector") st, err := state.ReadFromFile(file) - if err != nil && strings.Contains(err.Error(), fmt.Sprintf("open %s:", DefaultHelmfile)) { - var fallbackErr error - st, fallbackErr = state.ReadFromFile(DeprecatedHelmfile) - if fallbackErr != nil { - return nil, nil, fmt.Errorf("failed to read %s and %s: %v", file, DeprecatedHelmfile, err) + if err != nil { + if strings.Contains(err.Error(), fmt.Sprintf("open %s:", DefaultHelmfile)) { + var fallbackErr error + st, fallbackErr = state.ReadFromFile(DeprecatedHelmfile) + if fallbackErr != nil { + return nil, nil, fmt.Errorf("failed to read %s and %s: %v", file, DeprecatedHelmfile, err) + } + log.Printf("warn: charts.yaml is loaded: charts.yaml is deprecated in favor of helmfile.yaml. See https://github.com/roboll/helmfile/issues/25 for more information") + } else { + return nil, nil, fmt.Errorf("failed to read %s: %v", file, err) } - log.Printf("warn: charts.yaml is loaded: charts.yaml is deprecated in favor of helmfile.yaml. See https://github.com/roboll/helmfile/issues/25 for more information") } + if st.Context != "" { if kubeContext != "" { log.Printf("err: Cannot use option --kube-context and set attribute context.") diff --git a/state/state.go b/state/state.go index f82be7cc..ad7b3f2b 100644 --- a/state/state.go +++ b/state/state.go @@ -181,6 +181,11 @@ func (state *HelmState) SyncReleases(helm helmexec.Interface, additionalValues [ errQueue <- err haveValueErr = true } + + if _, err := os.Stat(valfile); os.IsNotExist(err) { + errQueue <- err + haveValueErr = true + } flags = append(flags, "--values", valfile) } @@ -241,6 +246,10 @@ func (state *HelmState) DiffReleases(helm helmexec.Interface, additionalValues [ if err != nil { errs = append(errs, err) } + + if _, err := os.Stat(valfile); os.IsNotExist(err) { + errs = append(errs, err) + } flags = append(flags, "--values", valfile) } if len(errs) == 0 { @@ -386,6 +395,11 @@ func flagsForRelease(helm helmexec.Interface, basePath string, release *ReleaseS if err != nil { return nil, err } + + if _, err := os.Stat(valfileRendered); os.IsNotExist(err) { + return nil, err + } + flags = append(flags, "--values", valfileRendered) } for _, value := range release.Secrets { @@ -395,6 +409,10 @@ func flagsForRelease(helm helmexec.Interface, basePath string, release *ReleaseS return nil, err } + if _, err := os.Stat(path); os.IsNotExist(err) { + return nil, err + } + valfileRendered, err := helm.DecryptSecret(path) if err != nil { return nil, err