helpers: Create changelog subdir for release

This commit is contained in:
Alexander Neumann 2020-11-05 09:39:06 +01:00
parent b8a5ca2d10
commit 79a50e3b1f

View file

@ -10,6 +10,7 @@ import (
"path/filepath" "path/filepath"
"regexp" "regexp"
"strings" "strings"
"time"
"github.com/spf13/pflag" "github.com/spf13/pflag"
) )
@ -186,34 +187,44 @@ func preCheckChangelogCurrent() {
} }
} }
func preCheckChangelogRelease() { func preCheckChangelogRelease() bool {
if opts.IgnoreChangelogReleaseDate { if opts.IgnoreChangelogReleaseDate {
return return true
} }
d, err := os.Open("changelog") for _, name := range readdir("changelog") {
if err != nil {
die("error opening dir: %v", err)
}
names, err := d.Readdirnames(-1)
if err != nil {
_ = d.Close()
die("error listing dir: %v", err)
}
err = d.Close()
if err != nil {
die("error closing dir: %v", err)
}
for _, name := range names {
if strings.HasPrefix(name, opts.Version+"_") { if strings.HasPrefix(name, opts.Version+"_") {
return return true
} }
} }
die("unable to find subdir with date for version %v in changelog", opts.Version) return false
}
func createChangelogRelease() {
date := time.Now().Format("2006-01-02")
target := filepath.Join("changelog", fmt.Sprintf("%s_%s", opts.Version, date))
mkdir(target)
for _, name := range readdir(filepath.Join("changelog", "unreleased")) {
if name == ".gitignore" {
continue
}
src := filepath.Join("changelog", "unreleased", name)
dest := filepath.Join(target, name)
err := os.Rename(src, dest)
if err != nil {
die("rename %v -> %v failed: %w", src, dest, err)
}
}
run("git", "add", target)
run("git", "add", "-u", filepath.Join("changelog", "unreleased"))
msg := fmt.Sprintf("Prepare changelog for %v", opts.Version)
run("git", "commit", "-m", msg, target)
} }
func preCheckChangelogVersion() { func preCheckChangelogVersion() {
@ -425,7 +436,9 @@ func main() {
preCheckUncommittedChanges() preCheckUncommittedChanges()
preCheckVersionExists() preCheckVersionExists()
preCheckDockerBuilderGoVersion() preCheckDockerBuilderGoVersion()
preCheckChangelogRelease() if !preCheckChangelogRelease() {
createChangelogRelease()
}
preCheckChangelogCurrent() preCheckChangelogCurrent()
preCheckChangelogVersion() preCheckChangelogVersion()