diff --git a/common/web.go b/common/web.go index 94adb91..fe2686c 100644 --- a/common/web.go +++ b/common/web.go @@ -1,70 +1,14 @@ package common import ( - "log" "strings" - "io/fs" - "path/filepath" - "os" "github.com/gofiber/fiber/v2" - "github.com/gofiber/template/html/v2" ) func Page(path string) (func(c *fiber.Ctx) error) { + page_id := strings.ReplaceAll(path, "/", "-") + "-page" + return func (c *fiber.Ctx) error { - return c.Render(path, fiber.Map{}) + return c.Render(path, fiber.Map{"PageId": page_id}) } } - -func RenderPages(pages_path string, target string, layout string) { - engine := html.New(pages_path, ".html") - engine.Load() - - err := filepath.WalkDir(pages_path, - func(path string, d fs.DirEntry, err error) error { - if !d.IsDir() { - if err != nil { return Fail(err, "path: %s", path); } - - dir := filepath.Dir(path) - err = os.MkdirAll(dir, 0750) - if err != nil { - return Fail(err, "making dir %s", dir); - } - - split_path := strings.Split(path, string(os.PathSeparator))[1:] - source_name := strings.Join(split_path, "/") // Render wants / even on windows - ext := filepath.Ext(source_name) - template_name, found := strings.CutSuffix(source_name, ext) - - if found && ext == ".html" && template_name != layout { - prefixed_path := append([]string{target}, split_path...) - - target_path := filepath.Join(prefixed_path...) - _, err := os.Stat(target_path) - - if os.IsNotExist(err) { - target_dir := filepath.Dir(target_path) - log.Println("MAKING: ", target_dir) - os.MkdirAll(target_dir, 0750) - } - - // TODO: compare time stamps and skip if not newer - - out, err := os.OpenFile(target_path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) - if err != nil { return Fail(err, "writing file %s", target_path) } - - // generate a data-testid for all pages based on template name - page_id := strings.ReplaceAll(template_name, "/", "-") + "-page" - err = engine.Render(out, template_name, fiber.Map{"PageId": page_id}, layout) - if err != nil { return Fail(err, "failed to render %s", path) } - - log.Printf("RENDER: %s -> %s", template_name, target_path) - out.Close() - } - } - - return nil - }) - - if err != nil { log.Fatalf("can't walk content") } -}