diff --git a/chglog.go b/chglog.go index 1a084c8a..5d51af71 100644 --- a/chglog.go +++ b/chglog.go @@ -162,7 +162,7 @@ func (gen *Generator) Generate(w io.Writer, query string) error { return err } - if len(versions) == 0 { + if len(versions) == 0 && query != "" { return fmt.Errorf("commits corresponding to \"%s\" was not found", query) } @@ -284,7 +284,8 @@ func (gen *Generator) getTags(query string) ([]*Tag, string, error) { }, tags...) } - if len(tags) == 0 { + // Error only when you explicitly set a query + if len(tags) == 0 && query != "" { return nil, "", errors.New("git-tag does not exist") } diff --git a/chglog_test.go b/chglog_test.go index a00359bb..a70ab050 100644 --- a/chglog_test.go +++ b/chglog_test.go @@ -70,7 +70,7 @@ func cleanup() { func TestGeneratorNotFoundTags(t *testing.T) { assert := assert.New(t) - testName := "not_found" + testName := "no_tags" setup(testName, func(commit commitFunc, _ tagFunc, _ gitcmd.Client) { commit("2018-01-01 00:00:00", "feat(*): New feature", "") @@ -91,9 +91,8 @@ func TestGeneratorNotFoundTags(t *testing.T) { err := gen.Generate(buf, "") expected := strings.TrimSpace(buf.String()) - assert.Error(err) - assert.Contains(err.Error(), "git-tag does not exist") - assert.Equal("", expected) + assert.Nil(err) + assert.Contains(expected, "\n## [Unreleased]") } func TestGeneratorNotFoundCommits(t *testing.T) { diff --git a/cmd/git-chglog/kac_template_builder.go b/cmd/git-chglog/kac_template_builder.go index e0956d2f..edf72edf 100644 --- a/cmd/git-chglog/kac_template_builder.go +++ b/cmd/git-chglog/kac_template_builder.go @@ -57,7 +57,7 @@ func (t *kacTemplateBuilderImpl) unreleased(style, format string) string { title = fmt.Sprintf("[%s]", title) } - return fmt.Sprintf(`{{ if .Versions -}} + return fmt.Sprintf(`{{ if .Unreleased -}} %s## %s {{ if .Unreleased.CommitGroups -}} @@ -156,24 +156,28 @@ func (*kacTemplateBuilderImpl) footer(style string) string { case styleGitHub, styleGitLab: return ` -{{- if .Versions }} -[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD +{{- if .Unreleased }} +{{ $latest := index .Unreleased.Commits 0 }} +{{ if .Unreleased.CommitGroups }}{{ $latest = index .Unreleased.CommitGroups 0 }}{{ end }} +[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest.Hash }}...HEAD +{{ end -}} {{ 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 }} +{{- if .Unreleased }} +{{ $latest := index .Unreleased.Commits 0 }} +{{ if .Unreleased.CommitGroups }}{{ $latest = index .Unreleased.CommitGroups 0 }}{{ end }} +[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest.Hash }}...HEAD +{{ end -}} {{ range .Versions -}} {{ if .Tag.Previous -}} [{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Name }}..{{ .Tag.Previous.Name }} {{ end -}} -{{ end -}} {{ end -}}` default: return "" diff --git a/cmd/git-chglog/kac_template_builder_test.go b/cmd/git-chglog/kac_template_builder_test.go index 70170aac..62cb5e22 100644 --- a/cmd/git-chglog/kac_template_builder_test.go +++ b/cmd/git-chglog/kac_template_builder_test.go @@ -19,7 +19,7 @@ func TestKACTemplateBuilderDefault(t *testing.T) { }) assert.Nil(err) - assert.Equal(`{{ if .Versions -}} + assert.Equal(`{{ if .Unreleased -}} ## [Unreleased] @@ -67,13 +67,15 @@ func TestKACTemplateBuilderDefault(t *testing.T) { {{ end -}} {{ end -}} -{{- if .Versions }} -[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD +{{- if .Unreleased }} +{{ $latest := index .Unreleased.Commits 0 }} +{{ if .Unreleased.CommitGroups }}{{ $latest = index .Unreleased.CommitGroups 0 }}{{ end }} +[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest.Hash }}...HEAD +{{ end -}} {{ range .Versions -}} {{ if .Tag.Previous -}} [{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }} {{ end -}} -{{ end -}} {{ end -}}`, out) } @@ -90,7 +92,7 @@ func TestKACTemplateBuilderNone(t *testing.T) { }) assert.Nil(err) - assert.Equal(`{{ if .Versions -}} + assert.Equal(`{{ if .Unreleased -}} ## Unreleased {{ if .Unreleased.CommitGroups -}} @@ -150,7 +152,7 @@ func TestKACTemplateBuilderSubject(t *testing.T) { }) assert.Nil(err) - assert.Equal(`{{ if .Versions -}} + assert.Equal(`{{ if .Unreleased -}} ## Unreleased {{ if .Unreleased.CommitGroups -}} diff --git a/testdata/no_tags.md b/testdata/no_tags.md new file mode 100644 index 00000000..081bc7bd --- /dev/null +++ b/testdata/no_tags.md @@ -0,0 +1,51 @@ +{{ if .Unreleased -}} + +## [Unreleased] + +{{ if .Unreleased.CommitGroups -}} +{{ range .Unreleased.CommitGroups -}} +### {{ .Title }} +{{ range .Commits -}} +- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }} +{{ end }} +{{ end -}} +{{ end -}} +{{ 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 .NoteGroups -}} +{{ range .NoteGroups -}} +### {{ .Title }} +{{ range .Notes }} +{{ .Body }} +{{ end }} +{{ end -}} +{{ end -}} +{{ end -}} + +{{- if .Unreleased }} +{{ $latest := index .Unreleased.Commits 0 }} +{{ if .Unreleased.CommitGroups }}{{ $latest = index .Unreleased.CommitGroups 0 }}{{ end }} +[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest.Hash }}...HEAD +{{ end -}} +{{ range .Versions -}} +{{ if .Tag.Previous -}} +[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }} +{{ end -}} +{{ end -}} \ No newline at end of file