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}