Skip to content

Commit ab9e129

Browse files
committed
🌱 (chore): wrap config parsing and validation errors with contextual messages
1 parent 6452e9f commit ab9e129

File tree

3 files changed

+23
-10
lines changed

3 files changed

+23
-10
lines changed

‎pkg/config/store/yaml/store.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func New(fs machinery.Filesystem) store.Store {
6060
func (s *yamlStore) New(version config.Version) error {
6161
cfg, err := config.New(version)
6262
if err != nil {
63-
return err
63+
return fmt.Errorf("could not create config: %w", err)
6464
}
6565

6666
s.cfg = cfg

‎pkg/config/v3/config.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,15 @@ func (ss *stringSlice) UnmarshalJSON(b []byte) error {
3838
if b[0] == '[' {
3939
var sl []string
4040
if err := yaml.Unmarshal(b, &sl); err != nil {
41-
return err
41+
return fmt.Errorf("error unmarshalling string slice %q: %w", sl, err)
4242
}
4343
*ss = sl
4444
return nil
4545
}
4646

4747
var st string
4848
if err := yaml.Unmarshal(b, &st); err != nil {
49-
return err
49+
return fmt.Errorf("error unmarshalling string %q: %w", st, err)
5050
}
5151
*ss = stringSlice{st}
5252
return nil
@@ -235,7 +235,11 @@ func (c *Cfg) UpdateResource(res resource.Resource) error {
235235

236236
for i, r := range c.Resources {
237237
if res.GVK.IsEqualTo(r.GVK) {
238-
return c.Resources[i].Update(res)
238+
if err := c.Resources[i].Update(res); err != nil {
239+
return fmt.Errorf("failed to update resource %q: %w", res.GVK, err)
240+
}
241+
242+
return nil
239243
}
240244
}
241245

‎pkg/config/version.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@ func (v *Version) Parse(version string) error {
5454
if n, errParse := strconv.Atoi(version); errParse == nil && n < 0 {
5555
return errNonPositive
5656
}
57-
return err
57+
return fmt.Errorf("failed to convert version number %q: %w", substrings[0], err)
5858
} else if v.Number == 0 {
5959
return errNonPositive
6060
}
6161

6262
if len(substrings) > 1 {
6363
if err = v.Stage.Parse(substrings[1]); err != nil {
64-
return err
64+
return fmt.Errorf("failed to parse stage: %w", err)
6565
}
6666
}
6767

@@ -83,7 +83,11 @@ func (v Version) Validate() error {
8383
return errNonPositive
8484
}
8585

86-
return v.Stage.Validate()
86+
if err := v.Stage.Validate(); err != nil {
87+
return fmt.Errorf("failed to validate stage: %w", err)
88+
}
89+
90+
return nil
8791
}
8892

8993
// Compare returns -1 if v < other, 0 if v == other, and 1 if v > other.
@@ -105,17 +109,22 @@ func (v Version) IsStable() bool {
105109
// MarshalJSON implements json.Marshaller
106110
func (v Version) MarshalJSON() ([]byte, error) {
107111
if err := v.Validate(); err != nil {
108-
return []byte{}, err
112+
return []byte{}, fmt.Errorf("failed to validate version: %w", err)
113+
}
114+
115+
marshaled, err := json.Marshal(v.String())
116+
if err != nil {
117+
return []byte{}, fmt.Errorf("failed to marshal version: %w", err)
109118
}
110119

111-
return json.Marshal(v.String())
120+
return marshaled, nil
112121
}
113122

114123
// UnmarshalJSON implements json.Unmarshaller
115124
func (v *Version) UnmarshalJSON(b []byte) error {
116125
var str string
117126
if err := json.Unmarshal(b, &str); err != nil {
118-
return err
127+
return fmt.Errorf("failed to unmarshal version: %w", err)
119128
}
120129

121130
return v.Parse(str)

0 commit comments

Comments
 (0)