From 5fb296c17696a7a4c951726e42352e55f174694d Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Wed, 2 Jul 2025 15:47:22 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Verify=20valid=20shows.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix nil pointer derference --- convids/logic.go | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/convids/logic.go b/convids/logic.go index 53a9618..029e6df 100644 --- a/convids/logic.go +++ b/convids/logic.go @@ -18,6 +18,14 @@ import ( "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) { //nolint:gosec // I don't care if this is user input f, err := os.Open(path) @@ -27,7 +35,17 @@ func NewData(path string) (*Data, error) { ydec := yaml.NewDecoder(f) var data 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) { @@ -38,12 +56,6 @@ func ensureExtRe(c *Config) (err error) { 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 { file os.DirEntry source string