mirror of
https://github.com/git-chglog/git-chglog.git
synced 2026-01-23 02:15:12 +00:00
feat: Update template format to human readable
This commit is contained in:
parent
5ce1760d0f
commit
25c41823a3
4 changed files with 404 additions and 232 deletions
|
|
@ -12,7 +12,7 @@ func NewCustomTemplateBuilder() TemplateBuilder {
|
|||
// Build ...
|
||||
func (t *customTemplateBuilderImpl) Build(ans *Answer) (string, error) {
|
||||
// versions
|
||||
tpl := "{{range .Versions}}\n"
|
||||
tpl := "{{ range .Versions }}\n"
|
||||
|
||||
// version header
|
||||
tpl += t.versionHeader(ans.Style, ans.Template)
|
||||
|
|
@ -34,7 +34,7 @@ func (t *customTemplateBuilderImpl) Build(ans *Answer) (string, error) {
|
|||
tpl += t.notes()
|
||||
|
||||
// versions end
|
||||
tpl += "\n{{end}}"
|
||||
tpl += "{{ end -}}"
|
||||
|
||||
return tpl, nil
|
||||
}
|
||||
|
|
@ -42,30 +42,30 @@ func (t *customTemplateBuilderImpl) Build(ans *Answer) (string, error) {
|
|||
func (*customTemplateBuilderImpl) versionHeader(style, template string) string {
|
||||
var (
|
||||
tpl string
|
||||
tagName = "{{.Tag.Name}}"
|
||||
date = "{{datetime \"2006-01-02\" .Tag.Date}}"
|
||||
tagName = "{{ .Tag.Name }}"
|
||||
date = "{{ datetime \"2006-01-02\" .Tag.Date }}"
|
||||
)
|
||||
|
||||
// parts
|
||||
switch style {
|
||||
case styleGitHub, styleGitLab:
|
||||
tpl = "<a name=\"{{.Tag.Name}}\"></a>\n"
|
||||
tagName = "{{if .Tag.Previous}}[{{.Tag.Name}}]({{$.Info.RepositoryURL}}/compare/{{.Tag.Previous.Name}}...{{.Tag.Name}}){{else}}{{.Tag.Name}}{{end}}"
|
||||
tpl = "<a name=\"{{ .Tag.Name }}\"></a>\n"
|
||||
tagName = "{{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}){{ else }}{{ .Tag.Name }}{{ end }}"
|
||||
case styleBitbucket:
|
||||
tpl = "<a name=\"{{.Tag.Name}}\"></a>\n"
|
||||
tagName = "{{if .Tag.Previous}}[{{.Tag.Name}}]({{$.Info.RepositoryURL}}/compare/{{.Tag.Name}}..{{.Tag.Previous.Name}}){{else}}{{.Tag.Name}}{{end}}"
|
||||
tpl = "<a name=\"{{ .Tag.Name }}\"></a>\n"
|
||||
tagName = "{{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Name }}..{{ .Tag.Previous.Name }}){{ else }}{{ .Tag.Name }}{{ end }}"
|
||||
}
|
||||
|
||||
// format
|
||||
switch template {
|
||||
case tplStandard:
|
||||
tpl = fmt.Sprintf("%s## %s (%s)\n",
|
||||
tpl = fmt.Sprintf("%s## %s (%s)\n\n",
|
||||
tpl,
|
||||
tagName,
|
||||
date,
|
||||
)
|
||||
case tplCool:
|
||||
tpl = fmt.Sprintf("%s## %s\n\n> %s\n",
|
||||
tpl = fmt.Sprintf("%s## %s\n\n> %s\n\n",
|
||||
tpl,
|
||||
tagName,
|
||||
date,
|
||||
|
|
@ -83,33 +83,40 @@ func (*customTemplateBuilderImpl) commits(template, format string) string {
|
|||
|
||||
switch format {
|
||||
case fmtSubject.Display:
|
||||
body = `{{range .Commits}}
|
||||
* {{.Header}}{{end}}
|
||||
`
|
||||
body = `{{ range .Commits -}}
|
||||
* {{ .Header }}
|
||||
{{ end }}`
|
||||
|
||||
default:
|
||||
if format == fmtTypeScopeSubject.Display {
|
||||
header = "{{if .Scope}}**{{.Scope}}:** {{end}}{{.Subject}}"
|
||||
header = "{{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}"
|
||||
} else {
|
||||
header = "{{.Subject}}"
|
||||
header = "{{ .Subject }}"
|
||||
}
|
||||
|
||||
body = fmt.Sprintf(`### {{.Title}}
|
||||
{{range .Commits}}
|
||||
* %s{{end}}
|
||||
`, header)
|
||||
body = fmt.Sprintf(`### {{ .Title }}
|
||||
|
||||
{{ range .Commits -}}
|
||||
* %s
|
||||
{{ end }}`, header)
|
||||
}
|
||||
|
||||
return fmt.Sprintf(`{{range .CommitGroups}}
|
||||
%s{{end}}`, body)
|
||||
return fmt.Sprintf(`{{ range .CommitGroups -}}
|
||||
%s
|
||||
{{ end -}}
|
||||
`, body)
|
||||
}
|
||||
|
||||
func (*customTemplateBuilderImpl) reverts() string {
|
||||
return `{{if .RevertCommits}}
|
||||
return `
|
||||
{{- if .RevertCommits -}}
|
||||
### Reverts
|
||||
{{range .RevertCommits}}
|
||||
* {{.Revert.Header}}{{end}}
|
||||
{{end}}`
|
||||
|
||||
{{ range .RevertCommits -}}
|
||||
* {{ .Revert.Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
`
|
||||
}
|
||||
|
||||
func (t *customTemplateBuilderImpl) merges(style string) string {
|
||||
|
|
@ -124,18 +131,27 @@ func (t *customTemplateBuilderImpl) merges(style string) string {
|
|||
title = "Merges"
|
||||
}
|
||||
|
||||
return fmt.Sprintf(`{{if .MergeCommits}}
|
||||
return fmt.Sprintf(`
|
||||
{{- if .MergeCommits -}}
|
||||
### %s
|
||||
{{range .MergeCommits}}
|
||||
* {{.Header}}{{end}}
|
||||
{{end}}`, title)
|
||||
|
||||
{{ range .MergeCommits -}}
|
||||
* {{ .Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
`, title)
|
||||
}
|
||||
|
||||
func (*customTemplateBuilderImpl) notes() string {
|
||||
return `{{range .NoteGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Notes}}
|
||||
{{.Body}}
|
||||
{{end}}
|
||||
{{end}}`
|
||||
return `
|
||||
{{- if .NoteGroups -}}
|
||||
{{ range .NoteGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Notes }}
|
||||
{{ .Body }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,28 +19,44 @@ func TestCustomTemplateBuilderDefault(t *testing.T) {
|
|||
})
|
||||
|
||||
assert.Nil(err)
|
||||
assert.Equal(`{{range .Versions}}
|
||||
<a name="{{.Tag.Name}}"></a>
|
||||
## {{if .Tag.Previous}}[{{.Tag.Name}}]({{$.Info.RepositoryURL}}/compare/{{.Tag.Previous.Name}}...{{.Tag.Name}}){{else}}{{.Tag.Name}}{{end}} ({{datetime "2006-01-02" .Tag.Date}})
|
||||
{{range .CommitGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Commits}}
|
||||
* {{if .Scope}}**{{.Scope}}:** {{end}}{{.Subject}}{{end}}
|
||||
{{end}}{{if .RevertCommits}}
|
||||
assert.Equal(`{{ range .Versions }}
|
||||
<a name="{{ .Tag.Name }}"></a>
|
||||
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}){{ else }}{{ .Tag.Name }}{{ end }} ({{ datetime "2006-01-02" .Tag.Date }})
|
||||
|
||||
{{ range .CommitGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Commits -}}
|
||||
* {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .RevertCommits -}}
|
||||
### Reverts
|
||||
{{range .RevertCommits}}
|
||||
* {{.Revert.Header}}{{end}}
|
||||
{{end}}{{if .MergeCommits}}
|
||||
|
||||
{{ range .RevertCommits -}}
|
||||
* {{ .Revert.Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .MergeCommits -}}
|
||||
### Pull Requests
|
||||
{{range .MergeCommits}}
|
||||
* {{.Header}}{{end}}
|
||||
{{end}}{{range .NoteGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Notes}}
|
||||
{{.Body}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}`, out)
|
||||
|
||||
{{ range .MergeCommits -}}
|
||||
* {{ .Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .NoteGroups -}}
|
||||
{{ range .NoteGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Notes }}
|
||||
{{ .Body }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}`, out)
|
||||
}
|
||||
|
||||
func TestCustomTemplateBuilderNone(t *testing.T) {
|
||||
|
|
@ -56,65 +72,43 @@ func TestCustomTemplateBuilderNone(t *testing.T) {
|
|||
})
|
||||
|
||||
assert.Nil(err)
|
||||
assert.Equal(`{{range .Versions}}
|
||||
## {{.Tag.Name}} ({{datetime "2006-01-02" .Tag.Date}})
|
||||
{{range .CommitGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Commits}}
|
||||
* {{if .Scope}}**{{.Scope}}:** {{end}}{{.Subject}}{{end}}
|
||||
{{end}}{{if .RevertCommits}}
|
||||
assert.Equal(`{{ range .Versions }}
|
||||
## {{ .Tag.Name }} ({{ datetime "2006-01-02" .Tag.Date }})
|
||||
|
||||
{{ range .CommitGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Commits -}}
|
||||
* {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .RevertCommits -}}
|
||||
### Reverts
|
||||
{{range .RevertCommits}}
|
||||
* {{.Revert.Header}}{{end}}
|
||||
{{end}}{{if .MergeCommits}}
|
||||
|
||||
{{ range .RevertCommits -}}
|
||||
* {{ .Revert.Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .MergeCommits -}}
|
||||
### Merges
|
||||
{{range .MergeCommits}}
|
||||
* {{.Header}}{{end}}
|
||||
{{end}}{{range .NoteGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Notes}}
|
||||
{{.Body}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}`, out)
|
||||
}
|
||||
|
||||
func TestCustomTemplateBuilderCool(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
builder := NewCustomTemplateBuilder()
|
||||
{{ range .MergeCommits -}}
|
||||
* {{ .Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
out, err := builder.Build(&Answer{
|
||||
Style: styleNone,
|
||||
CommitMessageFormat: fmtTypeScopeSubject.Display,
|
||||
Template: tplCool,
|
||||
IncludeMerges: true,
|
||||
IncludeReverts: true,
|
||||
})
|
||||
{{- if .NoteGroups -}}
|
||||
{{ range .NoteGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
assert.Nil(err)
|
||||
assert.Equal(`{{range .Versions}}
|
||||
## {{.Tag.Name}}
|
||||
|
||||
> {{datetime "2006-01-02" .Tag.Date}}
|
||||
{{range .CommitGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Commits}}
|
||||
* {{if .Scope}}**{{.Scope}}:** {{end}}{{.Subject}}{{end}}
|
||||
{{end}}{{if .RevertCommits}}
|
||||
### Reverts
|
||||
{{range .RevertCommits}}
|
||||
* {{.Revert.Header}}{{end}}
|
||||
{{end}}{{if .MergeCommits}}
|
||||
### Merges
|
||||
{{range .MergeCommits}}
|
||||
* {{.Header}}{{end}}
|
||||
{{end}}{{range .NoteGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Notes}}
|
||||
{{.Body}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}`, out)
|
||||
{{ range .Notes }}
|
||||
{{ .Body }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}`, out)
|
||||
}
|
||||
|
||||
func TestCustomTemplateBuilderSubjectOnly(t *testing.T) {
|
||||
|
|
@ -130,26 +124,41 @@ func TestCustomTemplateBuilderSubjectOnly(t *testing.T) {
|
|||
})
|
||||
|
||||
assert.Nil(err)
|
||||
assert.Equal(`{{range .Versions}}
|
||||
## {{.Tag.Name}} ({{datetime "2006-01-02" .Tag.Date}})
|
||||
{{range .CommitGroups}}
|
||||
{{range .Commits}}
|
||||
* {{.Header}}{{end}}
|
||||
{{end}}{{if .RevertCommits}}
|
||||
assert.Equal(`{{ range .Versions }}
|
||||
## {{ .Tag.Name }} ({{ datetime "2006-01-02" .Tag.Date }})
|
||||
|
||||
{{ range .CommitGroups -}}
|
||||
{{ range .Commits -}}
|
||||
* {{ .Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .RevertCommits -}}
|
||||
### Reverts
|
||||
{{range .RevertCommits}}
|
||||
* {{.Revert.Header}}{{end}}
|
||||
{{end}}{{if .MergeCommits}}
|
||||
|
||||
{{ range .RevertCommits -}}
|
||||
* {{ .Revert.Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .MergeCommits -}}
|
||||
### Merges
|
||||
{{range .MergeCommits}}
|
||||
* {{.Header}}{{end}}
|
||||
{{end}}{{range .NoteGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Notes}}
|
||||
{{.Body}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}`, out)
|
||||
|
||||
{{ range .MergeCommits -}}
|
||||
* {{ .Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .NoteGroups -}}
|
||||
{{ range .NoteGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Notes }}
|
||||
{{ .Body }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}`, out)
|
||||
}
|
||||
|
||||
func TestCustomTemplateBuilderSubject(t *testing.T) {
|
||||
|
|
@ -165,27 +174,43 @@ func TestCustomTemplateBuilderSubject(t *testing.T) {
|
|||
})
|
||||
|
||||
assert.Nil(err)
|
||||
assert.Equal(`{{range .Versions}}
|
||||
## {{.Tag.Name}} ({{datetime "2006-01-02" .Tag.Date}})
|
||||
{{range .CommitGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Commits}}
|
||||
* {{.Subject}}{{end}}
|
||||
{{end}}{{if .RevertCommits}}
|
||||
assert.Equal(`{{ range .Versions }}
|
||||
## {{ .Tag.Name }} ({{ datetime "2006-01-02" .Tag.Date }})
|
||||
|
||||
{{ range .CommitGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Commits -}}
|
||||
* {{ .Subject }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .RevertCommits -}}
|
||||
### Reverts
|
||||
{{range .RevertCommits}}
|
||||
* {{.Revert.Header}}{{end}}
|
||||
{{end}}{{if .MergeCommits}}
|
||||
|
||||
{{ range .RevertCommits -}}
|
||||
* {{ .Revert.Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .MergeCommits -}}
|
||||
### Merges
|
||||
{{range .MergeCommits}}
|
||||
* {{.Header}}{{end}}
|
||||
{{end}}{{range .NoteGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Notes}}
|
||||
{{.Body}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}`, out)
|
||||
|
||||
{{ range .MergeCommits -}}
|
||||
* {{ .Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .NoteGroups -}}
|
||||
{{ range .NoteGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Notes }}
|
||||
{{ .Body }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}`, out)
|
||||
}
|
||||
|
||||
func TestCustomTemplateBuilderIgnoreReverts(t *testing.T) {
|
||||
|
|
@ -201,23 +226,35 @@ func TestCustomTemplateBuilderIgnoreReverts(t *testing.T) {
|
|||
})
|
||||
|
||||
assert.Nil(err)
|
||||
assert.Equal(`{{range .Versions}}
|
||||
## {{.Tag.Name}} ({{datetime "2006-01-02" .Tag.Date}})
|
||||
{{range .CommitGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Commits}}
|
||||
* {{.Subject}}{{end}}
|
||||
{{end}}{{if .MergeCommits}}
|
||||
assert.Equal(`{{ range .Versions }}
|
||||
## {{ .Tag.Name }} ({{ datetime "2006-01-02" .Tag.Date }})
|
||||
|
||||
{{ range .CommitGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Commits -}}
|
||||
* {{ .Subject }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .MergeCommits -}}
|
||||
### Merges
|
||||
{{range .MergeCommits}}
|
||||
* {{.Header}}{{end}}
|
||||
{{end}}{{range .NoteGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Notes}}
|
||||
{{.Body}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}`, out)
|
||||
|
||||
{{ range .MergeCommits -}}
|
||||
* {{ .Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .NoteGroups -}}
|
||||
{{ range .NoteGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Notes }}
|
||||
{{ .Body }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}`, out)
|
||||
}
|
||||
|
||||
func TestCustomTemplateBuilderIgnoreMerges(t *testing.T) {
|
||||
|
|
@ -233,21 +270,87 @@ func TestCustomTemplateBuilderIgnoreMerges(t *testing.T) {
|
|||
})
|
||||
|
||||
assert.Nil(err)
|
||||
assert.Equal(`{{range .Versions}}
|
||||
## {{.Tag.Name}} ({{datetime "2006-01-02" .Tag.Date}})
|
||||
{{range .CommitGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Commits}}
|
||||
* {{.Subject}}{{end}}
|
||||
{{end}}{{if .RevertCommits}}
|
||||
assert.Equal(`{{ range .Versions }}
|
||||
## {{ .Tag.Name }} ({{ datetime "2006-01-02" .Tag.Date }})
|
||||
|
||||
{{ range .CommitGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Commits -}}
|
||||
* {{ .Subject }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .RevertCommits -}}
|
||||
### Reverts
|
||||
{{range .RevertCommits}}
|
||||
* {{.Revert.Header}}{{end}}
|
||||
{{end}}{{range .NoteGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Notes}}
|
||||
{{.Body}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}`, out)
|
||||
|
||||
{{ range .RevertCommits -}}
|
||||
* {{ .Revert.Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .NoteGroups -}}
|
||||
{{ range .NoteGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Notes }}
|
||||
{{ .Body }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}`, out)
|
||||
}
|
||||
|
||||
func TestCustomTemplateBuilderCool(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
builder := NewCustomTemplateBuilder()
|
||||
|
||||
out, err := builder.Build(&Answer{
|
||||
Style: styleNone,
|
||||
CommitMessageFormat: fmtTypeScopeSubject.Display,
|
||||
Template: tplCool,
|
||||
IncludeMerges: true,
|
||||
IncludeReverts: true,
|
||||
})
|
||||
|
||||
assert.Nil(err)
|
||||
assert.Equal(`{{ range .Versions }}
|
||||
## {{ .Tag.Name }}
|
||||
|
||||
> {{ datetime "2006-01-02" .Tag.Date }}
|
||||
|
||||
{{ range .CommitGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Commits -}}
|
||||
* {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .RevertCommits -}}
|
||||
### Reverts
|
||||
|
||||
{{ range .RevertCommits -}}
|
||||
* {{ .Revert.Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .MergeCommits -}}
|
||||
### Merges
|
||||
|
||||
{{ range .MergeCommits -}}
|
||||
* {{ .Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .NoteGroups -}}
|
||||
{{ range .NoteGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Notes }}
|
||||
{{ .Body }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}`, out)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,11 @@ func NewKACTemplateBuilder() TemplateBuilder {
|
|||
// Build ...
|
||||
func (t *kacTemplateBuilderImpl) Build(ans *Answer) (string, error) {
|
||||
// versions
|
||||
tpl := "## {{if .Versions}}[Unreleased]{{end}}\n{{range .Versions}}\n"
|
||||
tpl := `## {{ if .Versions }}[Unreleased]{{ end }}
|
||||
|
||||
{{ range .Versions }}
|
||||
`
|
||||
|
||||
tpl += t.versionHeader(ans.Style)
|
||||
|
||||
// commits
|
||||
|
|
@ -32,7 +36,7 @@ func (t *kacTemplateBuilderImpl) Build(ans *Answer) (string, error) {
|
|||
tpl += t.notes()
|
||||
|
||||
// versions end
|
||||
tpl += "{{end}}"
|
||||
tpl += "{{ end -}}\n"
|
||||
|
||||
// footer (links)
|
||||
tpl += t.footer(ans.Style)
|
||||
|
|
@ -42,16 +46,16 @@ func (t *kacTemplateBuilderImpl) Build(ans *Answer) (string, error) {
|
|||
|
||||
func (t *kacTemplateBuilderImpl) versionHeader(style string) string {
|
||||
var (
|
||||
tagName = "{{.Tag.Name}}"
|
||||
date = "{{datetime \"2006-01-02\" .Tag.Date}}"
|
||||
tagName = "{{ .Tag.Name }}"
|
||||
date = "{{ datetime \"2006-01-02\" .Tag.Date }}"
|
||||
)
|
||||
|
||||
switch style {
|
||||
case styleGitHub, styleGitLab, styleBitbucket:
|
||||
tagName = "{{if .Tag.Previous}}[{{.Tag.Name}}]{{else}}{{.Tag.Name}}{{end}}"
|
||||
tagName = "{{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }}"
|
||||
}
|
||||
|
||||
return fmt.Sprintf("## %s - %s", tagName, date)
|
||||
return fmt.Sprintf("## %s - %s\n", tagName, date)
|
||||
}
|
||||
|
||||
func (t *kacTemplateBuilderImpl) commits(format string) string {
|
||||
|
|
@ -61,24 +65,32 @@ func (t *kacTemplateBuilderImpl) commits(format string) string {
|
|||
|
||||
switch format {
|
||||
case fmtSubject.Display:
|
||||
body = `{{range .Commits}}
|
||||
- {{.Header}}{{end}}`
|
||||
body = `{{ range .Commits -}}
|
||||
- {{ .Header }}
|
||||
{{ end }}`
|
||||
|
||||
default:
|
||||
body = `### {{.Title}}{{range .Commits}}
|
||||
- {{if .Scope}}**{{.Scope}}:** {{end}}{{.Subject}}{{end}}`
|
||||
body = `### {{ .Title }}
|
||||
{{ range .Commits -}}
|
||||
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
|
||||
{{ end }}`
|
||||
}
|
||||
|
||||
return fmt.Sprintf(`{{range .CommitGroups}}
|
||||
return fmt.Sprintf(`{{ range .CommitGroups -}}
|
||||
%s
|
||||
{{end}}`, body)
|
||||
{{ end -}}
|
||||
`, body)
|
||||
}
|
||||
|
||||
func (t *kacTemplateBuilderImpl) reverts() string {
|
||||
return `{{if .RevertCommits}}
|
||||
### Reverts{{range .RevertCommits}}
|
||||
- {{.Revert.Header}}{{end}}
|
||||
{{end}}`
|
||||
return `
|
||||
{{- if .RevertCommits -}}
|
||||
### Reverts
|
||||
{{ range .RevertCommits -}}
|
||||
- {{ .Revert.Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
`
|
||||
}
|
||||
|
||||
func (t *kacTemplateBuilderImpl) merges(style string) string {
|
||||
|
|
@ -93,33 +105,51 @@ func (t *kacTemplateBuilderImpl) merges(style string) string {
|
|||
title = "Merges"
|
||||
}
|
||||
|
||||
return fmt.Sprintf(`{{if .MergeCommits}}
|
||||
### %s{{range .MergeCommits}}
|
||||
- {{.Header}}{{end}}
|
||||
{{end}}`, title)
|
||||
return fmt.Sprintf(`
|
||||
{{- if .MergeCommits -}}
|
||||
### %s
|
||||
{{ range .MergeCommits -}}
|
||||
- {{ .Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
`, title)
|
||||
}
|
||||
|
||||
func (*kacTemplateBuilderImpl) notes() string {
|
||||
return `{{range .NoteGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Notes}}
|
||||
{{.Body}}
|
||||
{{end}}
|
||||
{{end}}`
|
||||
return `
|
||||
{{- if .NoteGroups -}}
|
||||
{{ range .NoteGroups -}}
|
||||
### {{ .Title }}
|
||||
{{ range .Notes }}
|
||||
{{ .Body }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
`
|
||||
}
|
||||
|
||||
func (*kacTemplateBuilderImpl) footer(style string) string {
|
||||
switch style {
|
||||
case styleGitHub, styleGitLab:
|
||||
return `{{if .Versions}}
|
||||
[Unreleased]: {{.Info.RepositoryURL}}/compare/{{$latest := index .Versions 0}}{{$latest.Tag.Name}}...HEAD{{range .Versions}}{{if .Tag.Previous}}
|
||||
[{{.Tag.Name}}]: {{$.Info.RepositoryURL}}/compare/{{.Tag.Previous.Name}}...{{.Tag.Name}}{{end}}{{end}}
|
||||
{{end}}`
|
||||
return `
|
||||
{{- if .Versions }}
|
||||
[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD
|
||||
{{ range .Versions -}}
|
||||
{{ if .Tag.Previous -}}
|
||||
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}`
|
||||
case styleBitbucket:
|
||||
return `{{if .Versions}}
|
||||
[Unreleased]: {{.Info.RepositoryURL}}/compare/HEAD..{{$latest := index .Versions 0}}{{$latest.Tag.Name}}{{range .Versions}}{{if .Tag.Previous}}
|
||||
[{{.Tag.Name}}]: {{$.Info.RepositoryURL}}/compare/{{.Tag.Name}}..{{.Tag.Previous.Name}}{{end}}{{end}}
|
||||
{{end}}`
|
||||
return `
|
||||
{{- if .Versions }}
|
||||
[Unreleased]: {{ .Info.RepositoryURL }}/compare/HEAD..{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}
|
||||
{{ range .Versions -}}
|
||||
{{ if .Tag.Previous -}}
|
||||
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Name }}..{{ .Tag.Previous.Name }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}`
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,24 +19,47 @@ func TestKACTemplateBuilderDefault(t *testing.T) {
|
|||
})
|
||||
|
||||
assert.Nil(err)
|
||||
assert.Equal(`## {{if .Versions}}[Unreleased]{{end}}
|
||||
{{range .Versions}}
|
||||
## {{if .Tag.Previous}}[{{.Tag.Name}}]{{else}}{{.Tag.Name}}{{end}} - {{datetime "2006-01-02" .Tag.Date}}{{range .CommitGroups}}
|
||||
### {{.Title}}{{range .Commits}}
|
||||
- {{if .Scope}}**{{.Scope}}:** {{end}}{{.Subject}}{{end}}
|
||||
{{end}}{{if .RevertCommits}}
|
||||
### Reverts{{range .RevertCommits}}
|
||||
- {{.Revert.Header}}{{end}}
|
||||
{{end}}{{if .MergeCommits}}
|
||||
### Pull Requests{{range .MergeCommits}}
|
||||
- {{.Header}}{{end}}
|
||||
{{end}}{{range .NoteGroups}}
|
||||
### {{.Title}}
|
||||
{{range .Notes}}
|
||||
{{.Body}}
|
||||
{{end}}
|
||||
{{end}}{{end}}{{if .Versions}}
|
||||
[Unreleased]: {{.Info.RepositoryURL}}/compare/{{$latest := index .Versions 0}}{{$latest.Tag.Name}}...HEAD{{range .Versions}}{{if .Tag.Previous}}
|
||||
[{{.Tag.Name}}]: {{$.Info.RepositoryURL}}/compare/{{.Tag.Previous.Name}}...{{.Tag.Name}}{{end}}{{end}}
|
||||
{{end}}`, out)
|
||||
assert.Equal(`## {{ if .Versions }}[Unreleased]{{ end }}
|
||||
|
||||
{{ range .Versions }}
|
||||
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
|
||||
{{ range .CommitGroups -}}
|
||||
### {{ .Title }}
|
||||
{{ range .Commits -}}
|
||||
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .RevertCommits -}}
|
||||
### Reverts
|
||||
{{ range .RevertCommits -}}
|
||||
- {{ .Revert.Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .MergeCommits -}}
|
||||
### Pull Requests
|
||||
{{ range .MergeCommits -}}
|
||||
- {{ .Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .NoteGroups -}}
|
||||
{{ range .NoteGroups -}}
|
||||
### {{ .Title }}
|
||||
{{ range .Notes }}
|
||||
{{ .Body }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .Versions }}
|
||||
[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD
|
||||
{{ range .Versions -}}
|
||||
{{ if .Tag.Previous -}}
|
||||
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}`, out)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue