all repos — vite @ f18dcbc513dfef8f521ecf3c4bd7ea02ee124aa1

a fast (this time, actually) and minimal static site generator

Collect all posts in a map by directory
Anirudh Oppiliappan x@icyphox.sh
Sun, 22 Dec 2024 15:55:05 +0200
commit

f18dcbc513dfef8f521ecf3c4bd7ea02ee124aa1

parent

81b8a3faf63f5b53e9d6e95aa09149941c4a2f11

2 files changed, 11 insertions(+), 12 deletions(-)

jump to
M commands/build.gocommands/build.go

@@ -26,6 +26,9 @@

type Pages struct { Dirs []Dir Files []types.File + + // A map of directories to their respective posts. + AllPosts map[string][]types.Post } func NewPages() (*Pages, error) {

@@ -35,6 +38,8 @@ entries, err := os.ReadDir(types.PagesDir)

if err != nil { return nil, err } + + pages.AllPosts = make(map[string][]types.Post) for _, entry := range entries { if entry.IsDir() {

@@ -96,11 +101,11 @@ if err := util.Clean(types.BuildDir); err != nil {

return err } - if err := pages.ProcessFiles(drafts); err != nil { + if err := pages.ProcessDirectories(drafts); err != nil { return err } - if err := pages.ProcessDirectories(drafts); err != nil { + if err := pages.ProcessFiles(drafts); err != nil { return err }

@@ -134,7 +139,7 @@ if err := os.MkdirAll(htmlDir, 0755); err != nil {

return err } } - if err := f.Render(destFile, nil, drafts); err != nil { + if err := f.Render(destFile, p.AllPosts, drafts); err != nil { return fmt.Errorf("error: failed to render %s: %w", destFile, err) } }

@@ -198,6 +203,8 @@ return fmt.Errorf("error: failed to create atom feed for: %s: %w", dir.Name, err)

} feedFile := filepath.Join(dstDir, "feed.xml") os.WriteFile(feedFile, xml, 0755) + + p.AllPosts[dir.Name] = posts } return nil
M commands/serve.gocommands/serve.go

@@ -2,23 +2,15 @@ package commands

import ( "fmt" - "log" "net/http" ) -func requestLog(h http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - h.ServeHTTP(w, r) - log.Printf("%s\t%s", r.Method, r.URL.Path) - }) -} - func Serve(addr string) error { fs := http.FileServer(http.Dir("./build")) mux := http.NewServeMux() mux.Handle("/", fs) fmt.Printf("vite: serving on %s\n", addr) - if err := http.ListenAndServe(addr, requestLog(mux)); err != nil { + if err := http.ListenAndServe(addr, mux); err != nil { return err } return nil