all repos — website @ 27448f33dce9141316bb4ea6d905305d8a846cac

My website

wip: verbose error handling

Alan Pearce
commit

27448f33dce9141316bb4ea6d905305d8a846cac

parent

0b61d3995bc01a5c8345b719459da261b92d3063

1 file changed, 16 insertions(+), 2 deletions(-)

changed files
M internal/config/config.gointernal/config/config.go
@@ -1,7 +1,10 @@
package config import ( + "io/fs" + "github.com/BurntSushi/toml" + "github.com/pkg/errors" ) type Taxonomy struct {
@@ -30,8 +33,19 @@ }
Menus map[string][]MenuItem } -func GetConfig() (error, Config) { +func GetConfig() (*Config, error) { config := Config{} _, err := toml.DecodeFile("config.toml", &config) - return err, config + if err != nil { + var pathError *fs.PathError + var tomlError toml.ParseError + if errors.As(err, &pathError) { + return nil, errors.WithMessage(err, "could not read configuration") + } else if errors.As(err, &tomlError) { + return nil, errors.WithMessage(err, tomlError.ErrorWithUsage()) + } else { + return nil, errors.Wrap(err, "config error") + } + } + return &config, nil }