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