1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
diff --git a/main.go b/main.go
index 699fc9c7e531aab231d5297efcfa4f50cdf0d5b5..747475235f2d618a6f1748d5f4703db08779e4a3 100644
--- a/main.go
+++ b/main.go
@@ -16,8 +16,12 @@
"github.com/alecthomas/chroma/v2/styles"
)
-//go:embed articles/*
-var articleFS embed.FS
+var (
+ //go:embed articles/*
+ articleFS embed.FS
+ //go:embed static/*
+ staticFS embed.FS
+)
func maine() error {
fs := flag.NewFlagSet("blog", flag.ExitOnError)
@@ -57,8 +61,7 @@ if err := writeCSS(*outFlag); err != nil {
return err
}
- sakuraDst := filepath.Join(*outFlag, "sakura.css")
- if err := copyFile(sakuraDst, "sakura.css"); err != nil {
+ if err := copyStatic(*outFlag); err != nil {
return err
}
@@ -73,6 +76,7 @@ return err
}
if *serveFlag {
+ fmt.Println("http://localhost:8080")
http.Handle("/", http.FileServer(http.Dir("out")))
http.ListenAndServe(":8080", nil)
}
@@ -102,7 +106,7 @@ return err
}
defer fi.Close()
- if err := CSS.WriteCSS(fi, styles.Get("catpuccin-latte")); err != nil {
+ if err := CSS.WriteCSS(fi, styles.Get("catppuccin-latte")); err != nil {
return err
}
fi.WriteString("@media (prefers-color-scheme: dark) {")
@@ -110,6 +114,37 @@ if err := CSS.WriteCSS(fi, styles.Get("catppuccin-mocha")); err != nil {
return err
}
fi.WriteString("}")
+ return nil
+}
+
+func copyStatic(out string) error {
+ files, err := staticFS.ReadDir("static")
+ if err != nil {
+ return err
+ }
+ for _, file := range files {
+ if err := func() error {
+ dstFi, err := os.Create(filepath.Join(out, file.Name()))
+ if err != nil {
+ return err
+ }
+ defer dstFi.Close()
+
+ srcFi, err := staticFS.Open("static/" + file.Name())
+ if err != nil {
+ return err
+ }
+ defer srcFi.Close()
+
+ if _, err := io.Copy(dstFi, srcFi); err != nil {
+ return err
+ }
+
+ return nil
+ }(); err != nil {
+ return err
+ }
+ }
return nil
}
|