Skip to content

Commit

Permalink
feat: Add commits to Unreleased when no tags.
Browse files Browse the repository at this point in the history
This requires you to run `git-chglog --init`
again to get an updated CHANGELOG.md file that
will work with this new feature.

Existing template will still work.

resolves git-chglog#76
  • Loading branch information
b01 committed Oct 4, 2021
1 parent 899c1ed commit 103409b
Show file tree
Hide file tree
Showing 7 changed files with 68 additions and 14 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,6 @@ Temporary Items


# End of https://www.gitignore.io/api/osx,macos,go
/.devcontainer/
/.docker/
/.vscode/
12 changes: 7 additions & 5 deletions chglog.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
package chglog

import (
"errors"
"fmt"
"io"
"log"
Expand Down Expand Up @@ -148,7 +147,7 @@ func (gen *Generator) Generate(w io.Writer, query string) error {
}()

tags, first, err := gen.getTags(query)
if err != nil {
if err != nil && err != errNoGitTag {
return err
}

Expand All @@ -162,7 +161,8 @@ func (gen *Generator) Generate(w io.Writer, query string) error {
return err
}

if len(versions) == 0 {
// Err when there are no versions, but tags exists or a query was test.
if len(versions) == 0 && (len(tags) > 0 || query != "") {
return fmt.Errorf("commits corresponding to \"%s\" was not found", query)
}

Expand Down Expand Up @@ -284,8 +284,10 @@ func (gen *Generator) getTags(query string) ([]*Tag, string, error) {
}, tags...)
}

if len(tags) == 0 {
return nil, "", errors.New("git-tag does not exist")
// When query is set but no tags are returned, then err,
// otherwise the repo has no tags at all and proceed.
if len(tags) == 0 && query != "" {
return nil, "", errNoGitTag
}

first := ""
Expand Down
9 changes: 4 additions & 5 deletions chglog_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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", "")
Expand All @@ -89,11 +89,10 @@ func TestGeneratorNotFoundTags(t *testing.T) {

buf := &bytes.Buffer{}
err := gen.Generate(buf, "")
expected := strings.TrimSpace(buf.String())
actual := strings.TrimSpace(buf.String())

assert.Error(err)
assert.Contains(err.Error(), "git-tag does not exist")
assert.Equal("", expected)
assert.Equal(nil, err)
assert.Contains(actual, "<a name=\"unreleased\"></a>\n## [Unreleased]")
}

func TestGeneratorNotFoundCommits(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion cmd/git-chglog/kac_template_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 -}}
Expand Down
6 changes: 3 additions & 3 deletions cmd/git-chglog/kac_template_builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ func TestKACTemplateBuilderDefault(t *testing.T) {
})

assert.Nil(err)
assert.Equal(`{{ if .Versions -}}
assert.Equal(`{{ if .Unreleased -}}
<a name="unreleased"></a>
## [Unreleased]
Expand Down Expand Up @@ -90,7 +90,7 @@ func TestKACTemplateBuilderNone(t *testing.T) {
})

assert.Nil(err)
assert.Equal(`{{ if .Versions -}}
assert.Equal(`{{ if .Unreleased -}}
## Unreleased
{{ if .Unreleased.CommitGroups -}}
Expand Down Expand Up @@ -150,7 +150,7 @@ func TestKACTemplateBuilderSubject(t *testing.T) {
})

assert.Nil(err)
assert.Equal(`{{ if .Versions -}}
assert.Equal(`{{ if .Unreleased -}}
## Unreleased
{{ if .Unreleased.CommitGroups -}}
Expand Down
1 change: 1 addition & 0 deletions errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ import "errors"
var (
errNotFoundTag = errors.New("could not find the tag")
errFailedQueryParse = errors.New("failed to parse the query")
errNoGitTag = errors.New("git-tag does not exist")
)
49 changes: 49 additions & 0 deletions testdata/no_tags.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{{ if .Unreleased -}}
<a name="unreleased"></a>
## [Unreleased]

{{ if .Unreleased.CommitGroups -}}
{{ range .Unreleased.CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}

{{ range .Versions }}
<a name="{{ .Tag.Name }}"></a>
## {{ 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 .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 -}}

0 comments on commit 103409b

Please sign in to comment.