This repository has been archived by the owner on Jan 8, 2021. It is now read-only.
/
info.go
92 lines (77 loc) · 1.7 KB
/
info.go
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package approve
import (
"bytes"
"io"
"strings"
"text/template"
"github.com/fatih/color"
)
type Info struct {
Owner string
OwnerURL string
PRFiles []string
Patterns []string
outStream io.Writer
}
func NewInfo(owner string, ownerURL string, prFiles []string, patterns []string, outStream io.Writer) Info {
return Info{
Owner: owner,
OwnerURL: ownerURL,
PRFiles: prFiles,
Patterns: patterns,
outStream: outStream,
}
}
func (i Info) printInfo() error {
color.New(color.FgCyan).Fprintf(i.outStream, "Owner: %s\n\n", i.Owner)
pr, err := template.New("PRFiles").Parse(prFileTemplate)
if err != nil {
return err
}
prbuf := &bytes.Buffer{}
if err := pr.Execute(prbuf, i.PRFiles); err != nil {
return err
}
color.New(color.FgGreen).Fprint(i.outStream, prbuf.String())
ptn, err := template.New("Patterns").Parse(matchPatternsTemplate)
if err != nil {
return err
}
ptnbuf := &bytes.Buffer{}
if err := ptn.Execute(ptnbuf, i.Patterns); err != nil {
return err
}
color.New(color.FgYellow).Fprint(i.outStream, ptnbuf.String())
return nil
}
func (i Info) generateReviewComment() (string, error) {
tmpl, err := template.New("template").Parse(commentTemplate)
if err != nil {
return "", err
}
buf := &bytes.Buffer{}
if err := tmpl.Execute(buf, i); err != nil {
return "", err
}
return strings.ReplaceAll(buf.String(), "#", "`"), nil
}
const (
commentTemplate = `
**[APPROVE]** Matched with Owner's Patterns
owner: [{{ .Owner }}]({{ .OwnerURL }})
PR Files:
{{range .PRFiles }}
* #{{ . }}#{{end}}
Patterns:
{{range .Patterns }}
* #{{ . }}#{{end}}
`
prFileTemplate = `PR Files:
{{range .}}* {{.}}
{{end}}
`
matchPatternsTemplate = `Patterns:
{{range .}}* {{.}}
{{end}}
`
)