package main import ( "fmt" "io/fs" "os" "website/internal/builder" "website/internal/log" "github.com/BurntSushi/toml" "github.com/ardanlabs/conf/v3" "github.com/pkg/errors" ) func main() { ioConfig := builder.IOConfig{} if help, err := conf.Parse("", &ioConfig); err != nil { if errors.Is(err, conf.ErrHelpWanted) { fmt.Println(help) os.Exit(1) } panic("error parsing configuration: " + err.Error()) } log.Configure(!ioConfig.Development) log.Debug("starting build process") if ioConfig.Source != "." { err := os.Chdir(ioConfig.Source) if err != nil { log.Panic("could not change to source directory") } } if err := builder.BuildSite(ioConfig); err != nil { switch cause := errors.Cause(err).(type) { case *fs.PathError: log.Error("path error", "error", err) case toml.ParseError: log.Info("parse error", "error", err) default: log.Info("other error", "error", err, "cause", errors.Cause(cause)) } os.Exit(1) } }