diff --git a/appview/state/router.go b/appview/state/router.go --- a/appview/state/router.go +++ b/appview/state/router.go @@ -26,6 +26,7 @@ "tangled.org/core/appview/spindles" "tangled.org/core/appview/state/userutil" avstrings "tangled.org/core/appview/strings" avtimeline "tangled.org/core/appview/timeline" + "tangled.org/core/blog" "tangled.org/core/log" ) @@ -164,7 +165,7 @@ r := chi.NewRouter() r.Handle("/static/*", s.pages.Static()) - tl := avtimeline.New(s.oauth, s.db, s.config, s.pages, s.logger, "blog/posts") + tl := avtimeline.New(s.oauth, s.db, s.config, s.pages, s.logger, blog.PostsFS) r.Get("/", tl.HomeOrTimeline) r.Get("/home", tl.Home) r.Get("/timeline", tl.Timeline) diff --git a/appview/timeline/router.go b/appview/timeline/router.go --- a/appview/timeline/router.go +++ b/appview/timeline/router.go @@ -5,7 +5,6 @@ "bytes" "io/fs" "log/slog" "net/http" - "os" "strings" "time" @@ -40,7 +39,7 @@ db *db.DB, config *config.Config, pages *pages.Pages, logger *slog.Logger, - postsDir string, + postsFS fs.FS, ) *Timeline { t := &Timeline{ oauth: oauth, @@ -49,7 +48,7 @@ config: config, pages: pages, logger: logger, } - t.recentPosts = loadRecentPosts(postsDir, logger) + t.recentPosts = loadRecentPosts(postsFS, logger) return t } @@ -61,11 +60,10 @@ r.Get("/timeline", t.Timeline) return r } -func loadRecentPosts(postsDir string, logger *slog.Logger) []pages.BlogPost { - fsys := os.DirFS(postsDir) - entries, err := fs.ReadDir(fsys, ".") +func loadRecentPosts(postsFS fs.FS, logger *slog.Logger) []pages.BlogPost { + entries, err := fs.ReadDir(postsFS, "posts") if err != nil { - logger.Warn("failed to read blog posts dir", "dir", postsDir, "err", err) + logger.Warn("failed to read blog posts", "err", err) return nil } @@ -74,7 +72,7 @@ for _, entry := range entries { if entry.IsDir() || !strings.HasSuffix(entry.Name(), ".md") { continue } - data, err := fs.ReadFile(fsys, entry.Name()) + data, err := fs.ReadFile(postsFS, "posts/"+entry.Name()) if err != nil { continue } diff --git a/blog/blog.go b/blog/blog.go --- a/blog/blog.go +++ b/blog/blog.go @@ -3,6 +3,7 @@ import ( "bytes" "cmp" + "embed" "html/template" "io" "io/fs" @@ -18,6 +19,9 @@ "tangled.org/core/appview/pages" "tangled.org/core/appview/pages/markup" textension "tangled.org/core/appview/pages/markup/extension" ) + +//go:embed posts +var PostsFS embed.FS type Author struct { Name string `yaml:"name"`