+10
-3
commands/build.go
+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
+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