mirror of
https://github.com/apricote/releaser-pleaser.git
synced 2026-02-07 10:17:02 +00:00
refactor: move changelog file to updater interface (#15)
This commit is contained in:
parent
47de2f97bc
commit
f0eed8cc56
5 changed files with 79 additions and 151 deletions
62
changelog.go
62
changelog.go
|
|
@ -3,14 +3,8 @@ package rp
|
|||
import (
|
||||
"bytes"
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"regexp"
|
||||
|
||||
"github.com/go-git/go-git/v5"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -20,8 +14,6 @@ const (
|
|||
|
||||
var (
|
||||
changelogTemplate *template.Template
|
||||
|
||||
headerRegex = regexp.MustCompile(`^# Changelog\n`)
|
||||
)
|
||||
|
||||
//go:embed changelog.md.tpl
|
||||
|
|
@ -35,60 +27,6 @@ func init() {
|
|||
}
|
||||
}
|
||||
|
||||
func UpdateChangelogFile(wt *git.Worktree, newEntry string) error {
|
||||
file, err := wt.Filesystem.OpenFile(ChangelogFile, os.O_RDWR|os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
content, err := io.ReadAll(file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
headerIndex := headerRegex.FindIndex(content)
|
||||
if headerIndex == nil && len(content) != 0 {
|
||||
return fmt.Errorf("unexpected format of CHANGELOG.md, header does not match")
|
||||
}
|
||||
if headerIndex != nil {
|
||||
// Remove the header from the content
|
||||
content = content[headerIndex[1]:]
|
||||
}
|
||||
|
||||
err = file.Truncate(0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = file.Seek(0, io.SeekStart)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = file.Write([]byte(ChangelogHeader + "\n\n" + newEntry))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = file.Write(content)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Close file to make sure it is written to disk.
|
||||
err = file.Close()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = wt.Add(ChangelogFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewChangelogEntry(commits []AnalyzedCommit, version, link, prefix, suffix string) (string, error) {
|
||||
features := make([]AnalyzedCommit, 0)
|
||||
fixes := make([]AnalyzedCommit, 0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue