Collect all posts in a map by directory
Anirudh Oppiliappan x@icyphox.sh
Sun, 22 Dec 2024 15:55:05 +0200
2 files changed,
11 insertions(+),
12 deletions(-)
M
commands/build.go
→
commands/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.go
→
commands/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