all repos

mugit @ c56a6bd

馃惍 git server that your cow will love
1 files changed, 15 insertions(+), 8 deletions(-)
ui: render readme of current subtree
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