1 files changed,
15 insertions(+),
8 deletions(-)
Author:
Oleksandr Smirnov
olexsmir@gmail.com
Committed at:
2026-02-20 21:47:28 +0200
Change ID:
ptrnwrposzltprnwksuomstsynxnsxkm
Parent:
e61accc
M
internal/handlers/repo.go
@@ -88,7 +88,7 @@ h.write500(w, err)
return } - p.Readme, err = h.renderReadme(repo) + p.Readme, err = h.renderReadme(repo, p.Ref, "") if err != nil { h.write500(w, err) return@@ -145,14 +145,19 @@ h.write500(w, err)
return } + readme, err := h.renderReadme(repo, ref, treePath) + if err != nil { + h.write500(w, err) + return + } + h.templ(w, "repo_tree", h.pageData(repo, RepoTree{ Desc: desc, Ref: ref, Tree: tree, ParentPath: treePath, DotDot: filepath.Dir(treePath), - // TODO: return the readme - Readme: "", + Readme: readme, })) }@@ -437,15 +442,17 @@ emoji.Emoji,
mdx.RelativeLink, )) -func (h *handlers) renderReadme(r *git.Repo) (template.HTML, error) { +func (h *handlers) renderReadme(r *git.Repo, ref, treePath string) (template.HTML, error) { name := r.Name() - if v, found := h.readmeCache.Get(name); found { + cacheKey := fmt.Sprintf("%s:%s:%s", name, ref, treePath) + if v, found := h.readmeCache.Get(cacheKey); found { return v, nil } var readmeContents template.HTML for _, readme := range h.c.Repo.Readmes { - fc, ferr := r.FileContent(readme) + fullPath := filepath.Join(treePath, readme) + fc, ferr := r.FileContent(fullPath) if ferr != nil { continue }@@ -461,7 +468,7 @@ switch ext {
case ".md", ".markdown", ".mkd": var buf bytes.Buffer if cerr := markdown.Convert([]byte(content), &buf, - mdx.NewRelativeLinkCtx(name, readme)); cerr != nil { + mdx.NewRelativeLinkCtx(name, fullPath)); cerr != nil { return "", cerr } readmeContents = template.HTML(buf.String())@@ -472,7 +479,7 @@ break
} } - h.readmeCache.Set(name, readmeContents) + h.readmeCache.Set(cacheKey, readmeContents) return readmeContents, nil }