🐛 Verify valid shows.yml

Fix nil pointer derference
This commit is contained in:
Dan Jones 2025-07-02 15:47:22 -05:00
commit 5fb296c176

View file

@ -18,6 +18,14 @@ import (
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
) )
type ShowWalker func(show *Show, path string) error
type GroupPrinter func(name string, group Shows)
var ErrNoFiles = errors.New("no files processed")
var ErrSkipped = errors.New("skipped")
var ErrMissingConfig = errors.New("missing config")
var ErrMissingShows = errors.New("missing shows")
func NewData(path string) (*Data, error) { func NewData(path string) (*Data, error) {
//nolint:gosec // I don't care if this is user input //nolint:gosec // I don't care if this is user input
f, err := os.Open(path) f, err := os.Open(path)
@ -27,7 +35,17 @@ func NewData(path string) (*Data, error) {
ydec := yaml.NewDecoder(f) ydec := yaml.NewDecoder(f)
var data Data var data Data
err = ydec.Decode(&data) err = ydec.Decode(&data)
return &data, err if err != nil {
return nil, err
}
if data.Config == nil {
return nil, ErrMissingConfig
}
if data.Shows == nil || len(*(data.Shows)) == 0 {
return nil, ErrMissingShows
}
return &data, nil
} }
func ensureExtRe(c *Config) (err error) { func ensureExtRe(c *Config) (err error) {
@ -38,12 +56,6 @@ func ensureExtRe(c *Config) (err error) {
return return
} }
type ShowWalker func(show *Show, path string) error
type GroupPrinter func(name string, group Shows)
var ErrNoFiles = errors.New("no files processed")
var ErrSkipped = errors.New("skipped")
type processInput struct { type processInput struct {
file os.DirEntry file os.DirEntry
source string source string