Skip to content

Commit

Permalink
hack/release: allow GitHub usernames with '-' (#4284)
Browse files Browse the repository at this point in the history
Fixes a bug where GitHub usernames containing
a '-' would break the changelog generator.

Closes #4280.

Signed-off-by: Steve Kriss <krisss@vmware.com>
  • Loading branch information
skriss committed Jan 20, 2022
1 parent ad889aa commit dbaa2a6
Showing 1 changed file with 23 additions and 11 deletions.
34 changes: 23 additions & 11 deletions hack/release/prepare-release.go
Original file line number Diff line number Diff line change
Expand Up @@ -228,10 +228,9 @@ func generateReleaseNotes(version, kubeMinVersion, kubeMaxVersion string) error
continue
}

nameParts := strings.Split(strings.TrimSuffix(dirEntry.Name(), ".md"), "-")

if len(nameParts) != 3 {
fmt.Printf("Skipping changelog file with invalid name format %q\n", dirEntry.Name())
entry, err := parseChangelogFilename(dirEntry.Name())
if err != nil {
fmt.Printf("Skipping changelog file: %v\n", err)
continue
}

Expand All @@ -240,13 +239,9 @@ func generateReleaseNotes(version, kubeMinVersion, kubeMaxVersion string) error
return fmt.Errorf("error reading file %s: %v", filepath.Join("changelogs", "unreleased", dirEntry.Name()), err)
}

entry := Entry{
PRNumber: nameParts[0],
Author: "@" + nameParts[1],
Content: strings.TrimSpace(string(contents)),
}
entry.Content = strings.TrimSpace(string(contents))

switch strings.ToLower(nameParts[2]) {
switch strings.ToLower(entry.Category) {
case "major":
d.Major = append(d.Major, entry)
case "minor":
Expand All @@ -256,7 +251,7 @@ func generateReleaseNotes(version, kubeMinVersion, kubeMaxVersion string) error
case "docs":
d.Docs = append(d.Docs, entry)
default:
fmt.Printf("Unrecognized category %s\n", nameParts[2])
fmt.Printf("Unrecognized category %q\n", entry.Category)
continue
}

Expand Down Expand Up @@ -296,6 +291,22 @@ func generateReleaseNotes(version, kubeMinVersion, kubeMaxVersion string) error
return nil
}

func parseChangelogFilename(filename string) (Entry, error) {
parts := strings.Split(strings.TrimSuffix(filename, ".md"), "-")

// We may have more than 3 parts if the GitHub username itself
// contains a '-'.
if len(parts) < 3 {
return Entry{}, fmt.Errorf("invalid name format %q\n", filename)
}

return Entry{
PRNumber: parts[0],
Author: "@" + strings.Join(parts[1:len(parts)-1], "-"),
Category: parts[len(parts)-1],
}, nil
}

// recordContributor adds contributor to contributors if they
// are not a maintainer and not already present.
func recordContributor(contributors []string, contributor string) []string {
Expand Down Expand Up @@ -324,6 +335,7 @@ type Entry struct {
PRNumber string
Author string
Content string
Category string
}

type Data struct {
Expand Down

0 comments on commit dbaa2a6

Please sign in to comment.