package main import ( "fmt" "io/fs" "log" "log/slog" "os" "website/internal/builder" "github.com/BurntSushi/toml" "github.com/ardanlabs/conf/v3" "github.com/pkg/errors" ) func main() { if os.Getenv("DEBUG") != "" { slog.SetLogLoggerLevel(slog.LevelDebug) } log.SetFlags(log.LstdFlags | log.Lmsgprefix) log.SetPrefix("build: ") slog.Debug("starting build process") ioConfig := builder.IOConfig{} if help, err := conf.Parse("", &ioConfig); err != nil { if errors.Is(err, conf.ErrHelpWanted) { fmt.Println(help) os.Exit(1) } log.Panicf("parsing I/O configuration: %v", err) } 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: slog.Info("pathError") slog.Error(fmt.Sprintf("%s", err)) case toml.ParseError: slog.Info("parseError") slog.Error(fmt.Sprintf("%s", err)) default: slog.Info("other") slog.Error(fmt.Sprintf("cause:%+v", errors.Cause(cause))) slog.Error(fmt.Sprintf("%+v", cause)) } os.Exit(1) } }