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