1
0
Fork 0
mirror of https://github.com/Luzifer/git-changerelease.git synced 2024-10-18 14:14:20 +00:00

make commit message configurable

This commit is contained in:
Knut Ahlers 2016-07-14 14:22:26 +02:00
parent e1808883c1
commit e182e805eb
Signed by: luzifer
GPG key ID: DC2729FDD34BE99E
3 changed files with 39 additions and 14 deletions

View file

@ -69,7 +69,7 @@ func (fi bindataFileInfo) Sys() interface{} {
return nil
}
var _assetsGit_changereleaseYaml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd2\xd5\xd5\xe5\xca\x4d\x2c\x49\xce\x88\x2f\x00\x91\x56\x5c\x0a\x0a\xba\x0a\x4a\x71\xd1\x69\x6e\xb1\x99\x15\x4a\x5c\x50\xb9\xdc\xc4\xac\xfc\x22\xb8\x9c\x53\x52\x6c\x51\x6a\x62\x76\x66\x5e\xba\x12\x17\x20\x00\x00\xff\xff\x2b\x53\xa7\xa0\x40\x00\x00\x00")
var _assetsGit_changereleaseYaml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd2\xd5\xd5\xe5\xca\x4d\x2c\x49\xce\x88\x2f\x00\x91\x56\x5c\x0a\x0a\xba\x0a\x4a\x71\xd1\x69\x6e\xb1\x99\x15\x4a\x5c\x50\xb9\xdc\xc4\xac\xfc\x22\xb8\x9c\x53\x52\x6c\x51\x6a\x62\x76\x66\x5e\x3a\x50\x41\x51\x6a\x4e\x6a\x62\x71\x6a\x7c\x72\x7e\x6e\x6e\x66\x49\x7c\x6e\x6a\x71\x71\x62\x7a\xaa\x95\x82\x52\x41\x51\x6a\x41\x62\x51\xaa\x02\x54\x81\x42\x75\xb5\x5e\x58\x6a\x51\x71\x66\x7e\x5e\x6d\xad\x12\x17\x20\x00\x00\xff\xff\x00\xa0\x8b\xae\x78\x00\x00\x00")
func assetsGit_changereleaseYamlBytes() ([]byte, error) {
return bindataRead(
@ -84,7 +84,7 @@ func assetsGit_changereleaseYaml() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "assets/git_changerelease.yaml", size: 64, mode: os.FileMode(436), modTime: time.Unix(1468492027, 0)}
info := bindataFileInfo{name: "assets/git_changerelease.yaml", size: 120, mode: os.FileMode(436), modTime: time.Unix(1468498243, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@ -104,7 +104,7 @@ func assetsLog_templateMd() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "assets/log_template.md", size: 135, mode: os.FileMode(436), modTime: time.Unix(1468493297, 0)}
info := bindataFileInfo{name: "assets/log_template.md", size: 135, mode: os.FileMode(436), modTime: time.Unix(1468497058, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}

View file

@ -4,3 +4,5 @@ match_patch:
match_major:
- "^[Bb]reaking"
release_commit_message: "prepare release {{.Version}}"

41
main.go
View file

@ -23,6 +23,7 @@ import (
type configFile struct {
MatchPatch []string `yaml:"match_patch"`
MatchMajor []string `yaml:"match_major"`
ReleaseCommitMessage string `yaml:"release_commit_message"`
}
var (
@ -79,6 +80,9 @@ func loadConfig() error {
return errors.New("Config file does not exist, use --create-config to create one")
}
defaultConfigData, _ := Asset("assets/git_changerelease.yaml")
yaml.Unmarshal(defaultConfigData, &config)
data, err := ioutil.ReadFile(cfg.ConfigFile)
if err != nil {
return err
@ -101,6 +105,17 @@ func readChangelog() string {
return changelog
}
func quickTemplate(name string, tplSrc []byte, values map[string]interface{}) ([]byte, error) {
tpl, err := template.New(name).Parse(string(tplSrc))
if err != nil {
return nil, errors.New("Unable to parse log template: " + err.Error())
}
buf := bytes.NewBuffer([]byte{})
tpl.Execute(buf, values)
return buf.Bytes(), nil
}
func main() {
// Get last tag
lastTag, err := gitSilent("describe", "--tags", "--abbrev=0")
@ -155,19 +170,17 @@ func main() {
// Render log
rawTpl, _ := Asset("assets/log_template.md")
tpl, err := template.New("log_template").Parse(string(rawTpl))
if err != nil {
log.Fatalf("Unable to parse log template: %s", err)
}
buf := bytes.NewBuffer([]byte{})
tpl.Execute(buf, map[string]interface{}{
c, err := quickTemplate("log_template", rawTpl, map[string]interface{}{
"NextVersion": newVersion,
"Now": time.Now(),
"LogLines": logs,
"OldLog": readChangelog(),
})
if err != nil {
log.Fatalf("Unable to compile log: %s", err)
}
if err := ioutil.WriteFile(cfg.ChangelogFile, bytes.TrimSpace(buf.Bytes()), 0644); err != nil {
if err := ioutil.WriteFile(cfg.ChangelogFile, bytes.TrimSpace(c), 0644); err != nil {
log.Fatalf("Unable to write new changelog: %s", err)
}
@ -192,14 +205,24 @@ func main() {
log.Fatalf("Unable to parse new version from log: %s", err)
}
stringVersion := "v" + newVersion.String()
// Write the tag
if _, err := gitErr("add", cfg.ChangelogFile); err != nil {
log.Fatalf("Unable to add changelog file: %s", err)
}
if _, err := gitErr("commit", "-m", "prepare release v"+newVersion.String()); err != nil {
commitMessage, err := quickTemplate("commitMessage", []byte(config.ReleaseCommitMessage), map[string]interface{}{
"Version": stringVersion,
})
if err != nil {
log.Fatalf("Unable to compile commit message: %s", err)
}
if _, err := gitErr("commit", "-m", string(commitMessage)); err != nil {
log.Fatalf("Unable to commit changelog: %s", err)
}
if _, err := gitErr("tag", "-s", "-m", "v"+newVersion.String(), "v"+newVersion.String()); err != nil {
if _, err := gitErr("tag", "-s", "-m", stringVersion, stringVersion); err != nil {
log.Fatalf("Unable to tag release: %s", err)
}
}