forked from TrueCloudLab/restic
helpers: Create changelog subdir for release
This commit is contained in:
parent
b8a5ca2d10
commit
79a50e3b1f
1 changed files with 35 additions and 22 deletions
|
@ -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()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue