diff options
Diffstat (limited to 'cmd/build/main.go')
| -rw-r--r-- | cmd/build/main.go | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/cmd/build/main.go b/cmd/build/main.go new file mode 100644 index 0000000..9c5cd15 --- /dev/null +++ b/cmd/build/main.go @@ -0,0 +1,57 @@ +package main + +import ( + "errors" + "fmt" + "log" + "os" + "path" + + "git.sr.ht/~a73x/home/pages" +) + +func main() { + if err := Run(); err != nil { + log.Fatal(err) + } +} + +func Run() error { + pages, err := pages.Collect("content") + if err != nil { + return err + } + + var errs []error + for _, page := range pages { + err = writeFile(path.Join("public", page.Path), []byte(page.Content)) + if err != nil { + errs = append(errs, err) + } + } + + if errs != nil { + return errors.Join(errs...) + } + + return nil +} + +func writeFile(name string, contents []byte) error { + folders := path.Dir(name) + _, err := os.Stat(folders) + if os.IsNotExist(err) { + if err := os.MkdirAll(folders, 0744); err != nil { + return fmt.Errorf("failed to mkdir %s\n%w", folders, err) + } + } else if err != nil { + return fmt.Errorf("failed to stat folder %s\n%w", folders, err) + } + + err = os.WriteFile(name, contents, 0666) + if err != nil { + return fmt.Errorf("failed to write file %s\n%w", name, err) + } + + return nil +} |
