fix(state): enhance error message for missing .gotmpl extension in helmfile v1 (#1989)

* fix(state): enhance error message for missing .gotmpl extension in helmfile

Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
yxxhero 2025-04-08 21:28:54 +08:00 committed by GitHub
parent dfe63135d6
commit eb32b6166e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 6 additions and 2 deletions

View File

@ -414,7 +414,7 @@ releases:
t.Run("fail due to unknown field with goccy/go-yaml", func(t *testing.T) {
check(t, testcase{
goccyGoYaml: true,
error: `in ./helmfile.yaml: failed to read helmfile.yaml: reading document at index 1: [4:3] unknown field "foobar"
error: `in ./helmfile.yaml: failed to read helmfile.yaml: reading document at index 1. Started seeing this since Helmfile v1? Add the .gotmpl file extension: [4:3] unknown field "foobar"
2 | releases:
3 | - name: app1
> 4 | foobar: FOOBAR
@ -426,7 +426,7 @@ releases:
t.Run("fail due to unknown field with gopkg.in/yaml.v2", func(t *testing.T) {
check(t, testcase{
goccyGoYaml: false,
error: `in ./helmfile.yaml: failed to read helmfile.yaml: reading document at index 1: yaml: unmarshal errors:
error: `in ./helmfile.yaml: failed to read helmfile.yaml: reading document at index 1. Started seeing this since Helmfile v1? Add the .gotmpl file extension: yaml: unmarshal errors:
line 4: field foobar not found in type state.ReleaseSpec`,
})
})

View File

@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"io"
"path/filepath"
"slices"
"strings"
@ -109,6 +110,9 @@ func (c *StateCreator) Parse(content []byte, baseDir, file string) (*HelmState,
if err == io.EOF {
break
} else if err != nil {
if filepath.Ext(file) != ".gotmpl" {
return nil, &StateLoadError{fmt.Sprintf("failed to read %s: reading document at index %d. Started seeing this since Helmfile v1? Add the .gotmpl file extension", file, i), err}
}
return nil, &StateLoadError{fmt.Sprintf("failed to read %s: reading document at index %d", file, i), err}
}