summaryrefslogtreecommitdiff
path: root/internal/generator/readme.go
blob: 3b24ec2f3095254099325cbc3bce080fe6f9091e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package generator

import (
	"bytes"
	"html/template"
	"strings"

	"mokhan.ca/xlgmokha/gitmal/internal/git"
	"mokhan.ca/xlgmokha/gitmal/internal/links"
)

func readme(files []git.Blob, dirsSet, filesSet links.Set, params Params, rootHref string) template.HTML {
	var readmeHTML template.HTML

	md := createMarkdown()

	for _, b := range files {
		nameLower := strings.ToLower(b.FileName)
		if strings.HasPrefix(nameLower, "readme") && isMarkdown(b.Path) {
			data, isBin, err := git.BlobContent(params.Ref, b.Path, params.RepoDir)
			if err != nil || isBin {
				break
			}
			var buf bytes.Buffer
			if err := md.Convert(data, &buf); err != nil {
				break
			}

			// Fix links/images relative to README location
			htmlStr := links.Resolve(
				buf.String(),
				b.Path,
				rootHref,
				params.Ref.DirName(),
				dirsSet,
				filesSet,
			)

			readmeHTML = template.HTML(htmlStr)
			break
		}
	}

	return readmeHTML
}