1 files changed,
15 insertions(+),
8 deletions(-)
Author:
Oleksandr Smirnov
olexsmir@gmail.com
Committed at:
2026-02-20 21:47:28 +0200
Authored at:
2026-02-20 21:40:39 +0200
Change ID:
ptrnwrposzltprnwksuomstsynxnsxkm
Parent:
e61accc
M
internal/handlers/repo.go
路路路 88 88 return 89 89 } 90 90 91 - p.Readme, err = h.renderReadme(repo) 91 + p.Readme, err = h.renderReadme(repo, p.Ref, "") 92 92 if err != nil { 93 93 h.write500(w, err) 94 94 return 路路路 145 145 return 146 146 } 147 147 148 + readme, err := h.renderReadme(repo, ref, treePath) 149 + if err != nil { 150 + h.write500(w, err) 151 + return 152 + } 153 + 148 154 h.templ(w, "repo_tree", h.pageData(repo, RepoTree{ 149 155 Desc: desc, 150 156 Ref: ref, 151 157 Tree: tree, 152 158 ParentPath: treePath, 153 159 DotDot: filepath.Dir(treePath), 154 - // TODO: return the readme 155 - Readme: "", 160 + Readme: readme, 156 161 })) 157 162 } 158 163 路路路 437 442 mdx.RelativeLink, 438 443 )) 439 444 440 -func (h *handlers) renderReadme(r *git.Repo) (template.HTML, error) { 445 +func (h *handlers) renderReadme(r *git.Repo, ref, treePath string) (template.HTML, error) { 441 446 name := r.Name() 442 - if v, found := h.readmeCache.Get(name); found { 447 + cacheKey := fmt.Sprintf("%s:%s:%s", name, ref, treePath) 448 + if v, found := h.readmeCache.Get(cacheKey); found { 443 449 return v, nil 444 450 } 445 451 446 452 var readmeContents template.HTML 447 453 for _, readme := range h.c.Repo.Readmes { 448 - fc, ferr := r.FileContent(readme) 454 + fullPath := filepath.Join(treePath, readme) 455 + fc, ferr := r.FileContent(fullPath) 449 456 if ferr != nil { 450 457 continue 451 458 } 路路路 461 468 case ".md", ".markdown", ".mkd": 462 469 var buf bytes.Buffer 463 470 if cerr := markdown.Convert([]byte(content), &buf, 464 - mdx.NewRelativeLinkCtx(name, readme)); cerr != nil { 471 + mdx.NewRelativeLinkCtx(name, fullPath)); cerr != nil { 465 472 return "", cerr 466 473 } 467 474 readmeContents = template.HTML(buf.String()) 路路路 472 479 } 473 480 } 474 481 475 - h.readmeCache.Set(name, readmeContents) 482 + h.readmeCache.Set(cacheKey, readmeContents) 476 483 return readmeContents, nil 477 484 } 478 485