fix: use description for breaking changes if no message in footer (#16)
This commit is contained in:
parent
42297c3db4
commit
24ca46653d
4 changed files with 23 additions and 26 deletions
|
@ -35,7 +35,7 @@ release-notes:
|
|||
- name: Documentation
|
||||
commit-types: [docs]
|
||||
section-type: commits
|
||||
- name: Breaking Changes
|
||||
- name: BREAKING CHANGES
|
||||
section-type: breaking-changes
|
||||
|
||||
commit-message:
|
||||
|
|
|
@ -292,22 +292,22 @@ func removeCarriage(commit string) string {
|
|||
// Parse a commit message.
|
||||
func (p BaseMessageProcessor) Parse(subject, body string) (CommitMessage, error) {
|
||||
preparedSubject, err := p.prepareHeader(subject)
|
||||
commitBody := removeCarriage(body)
|
||||
m := CommitMessage{}
|
||||
|
||||
if err != nil {
|
||||
return CommitMessage{}, err
|
||||
return m, err
|
||||
}
|
||||
|
||||
commitType, scope, description, hasBreakingChange := parseSubjectMessage(preparedSubject)
|
||||
|
||||
metadata := make(map[string]string)
|
||||
m.Metadata = make(map[string]string)
|
||||
m.Body = removeCarriage(body)
|
||||
m.Type, m.Scope, m.Description, m.IsBreakingChange = parseSubjectMessage(preparedSubject)
|
||||
|
||||
for key, mdCfg := range p.messageCfg.Footer {
|
||||
if mdCfg.Key != "" {
|
||||
prefixes := append([]string{mdCfg.Key}, mdCfg.KeySynonyms...)
|
||||
for _, prefix := range prefixes {
|
||||
if tagValue := extractFooterMetadata(prefix, commitBody, mdCfg.UseHash); tagValue != "" {
|
||||
metadata[key] = tagValue
|
||||
if tagValue := extractFooterMetadata(prefix, m.Body, mdCfg.UseHash); tagValue != "" {
|
||||
m.Metadata[key] = tagValue
|
||||
|
||||
break
|
||||
}
|
||||
|
@ -315,19 +315,16 @@ func (p BaseMessageProcessor) Parse(subject, body string) (CommitMessage, error)
|
|||
}
|
||||
}
|
||||
|
||||
if tagValue := extractFooterMetadata(BreakingChangeFooterKey, commitBody, false); tagValue != "" {
|
||||
metadata[BreakingChangeMetadataKey] = tagValue
|
||||
hasBreakingChange = true
|
||||
if m.IsBreakingChange {
|
||||
m.Metadata[BreakingChangeMetadataKey] = m.Description
|
||||
}
|
||||
|
||||
return CommitMessage{
|
||||
Type: commitType,
|
||||
Scope: scope,
|
||||
Description: description,
|
||||
Body: commitBody,
|
||||
IsBreakingChange: hasBreakingChange,
|
||||
Metadata: metadata,
|
||||
}, nil
|
||||
if tagValue := extractFooterMetadata(BreakingChangeFooterKey, m.Body, false); tagValue != "" {
|
||||
m.IsBreakingChange = true
|
||||
m.Metadata[BreakingChangeMetadataKey] = tagValue
|
||||
}
|
||||
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func (p BaseMessageProcessor) prepareHeader(header string) (string, error) {
|
||||
|
@ -371,11 +368,10 @@ func parseSubjectMessage(message string) (string, string, string, bool) {
|
|||
}
|
||||
|
||||
func extractFooterMetadata(key, text string, useHash bool) string {
|
||||
var regex *regexp.Regexp
|
||||
regex := regexp.MustCompile(key + ": (.*)")
|
||||
|
||||
if useHash {
|
||||
regex = regexp.MustCompile(key + " (#.*)")
|
||||
} else {
|
||||
regex = regexp.MustCompile(key + ": (.*)")
|
||||
}
|
||||
|
||||
result := regex.FindStringSubmatch(text)
|
||||
|
|
|
@ -604,7 +604,7 @@ func TestBaseMessageProcessor_Parse(t *testing.T) {
|
|||
},
|
||||
},
|
||||
{
|
||||
"breaking change with exclamation mark",
|
||||
"breaking change with empty body",
|
||||
ccfg,
|
||||
"feat!: something new", "",
|
||||
CommitMessage{
|
||||
|
@ -613,7 +613,9 @@ func TestBaseMessageProcessor_Parse(t *testing.T) {
|
|||
Description: "something new",
|
||||
Body: "",
|
||||
IsBreakingChange: true,
|
||||
Metadata: map[string]string{},
|
||||
Metadata: map[string]string{
|
||||
BreakingChangeMetadataKey: "something new",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
@ -77,8 +77,7 @@ func (p BaseReleaseNoteProcessor) Create(
|
|||
sections[sectionCfg.Name] = section
|
||||
}
|
||||
|
||||
if commit.Message.BreakingMessage() != "" {
|
||||
// TODO: if no message found, should use description instead?
|
||||
if commit.Message.IsBreakingChange {
|
||||
breakingChanges = append(breakingChanges, commit.Message.BreakingMessage())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue