fast and minimal static site generator
ssg

Collect all posts in a map by directory

anirudh.fi f18dcbc5 81b8a3fa

verified
Changed files
+11 -12
commands
+10 -3
commands/build.go
··· 26 26 type Pages struct { 27 27 Dirs []Dir 28 28 Files []types.File 29 + 30 + // A map of directories to their respective posts. 31 + AllPosts map[string][]types.Post 29 32 } 30 33 31 34 func NewPages() (*Pages, error) { ··· 35 38 if err != nil { 36 39 return nil, err 37 40 } 41 + 42 + pages.AllPosts = make(map[string][]types.Post) 38 43 39 44 for _, entry := range entries { 40 45 if entry.IsDir() { ··· 96 101 return err 97 102 } 98 103 99 - if err := pages.ProcessFiles(drafts); err != nil { 104 + if err := pages.ProcessDirectories(drafts); err != nil { 100 105 return err 101 106 } 102 107 103 - if err := pages.ProcessDirectories(drafts); err != nil { 108 + if err := pages.ProcessFiles(drafts); err != nil { 104 109 return err 105 110 } 106 111 ··· 134 139 return err 135 140 } 136 141 } 137 - if err := f.Render(destFile, nil, drafts); err != nil { 142 + if err := f.Render(destFile, p.AllPosts, drafts); err != nil { 138 143 return fmt.Errorf("error: failed to render %s: %w", destFile, err) 139 144 } 140 145 } ··· 198 203 } 199 204 feedFile := filepath.Join(dstDir, "feed.xml") 200 205 os.WriteFile(feedFile, xml, 0755) 206 + 207 + p.AllPosts[dir.Name] = posts 201 208 } 202 209 203 210 return nil
+1 -9
commands/serve.go
··· 2 2 3 3 import ( 4 4 "fmt" 5 - "log" 6 5 "net/http" 7 6 ) 8 7 9 - func requestLog(h http.Handler) http.Handler { 10 - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 11 - h.ServeHTTP(w, r) 12 - log.Printf("%s\t%s", r.Method, r.URL.Path) 13 - }) 14 - } 15 - 16 8 func Serve(addr string) error { 17 9 fs := http.FileServer(http.Dir("./build")) 18 10 mux := http.NewServeMux() 19 11 mux.Handle("/", fs) 20 12 fmt.Printf("vite: serving on %s\n", addr) 21 - if err := http.ListenAndServe(addr, requestLog(mux)); err != nil { 13 + if err := http.ListenAndServe(addr, mux); err != nil { 22 14 return err 23 15 } 24 16 return nil