main
1package generator
2
3import (
4 "bytes"
5 "html/template"
6 "strings"
7
8 "mokhan.ca/xlgmokha/gitmal/internal/git"
9 "mokhan.ca/xlgmokha/gitmal/internal/links"
10)
11
12func readme(files []git.Blob, dirsSet, filesSet links.Set, params Params, rootHref string) template.HTML {
13 var readmeHTML template.HTML
14
15 md := createMarkdown()
16
17 for _, b := range files {
18 nameLower := strings.ToLower(b.FileName)
19 if strings.HasPrefix(nameLower, "readme") && isMarkdown(b.Path) {
20 data, isBin, err := git.BlobContent(params.Ref, b.Path, params.RepoDir)
21 if err != nil || isBin {
22 break
23 }
24 var buf bytes.Buffer
25 if err := md.Convert(data, &buf); err != nil {
26 break
27 }
28
29 // Fix links/images relative to README location
30 htmlStr := links.Resolve(
31 buf.String(),
32 b.Path,
33 rootHref,
34 params.Ref.DirName(),
35 dirsSet,
36 filesSet,
37 )
38
39 readmeHTML = template.HTML(htmlStr)
40 break
41 }
42 }
43
44 return readmeHTML
45}