Skip to content

Commit

Permalink
exit if empty release message & title
Browse files Browse the repository at this point in the history
  • Loading branch information
hassansin committed Jul 3, 2018
1 parent 3c9b8a0 commit 0f228f6
Showing 1 changed file with 30 additions and 22 deletions.
52 changes: 30 additions & 22 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,19 +61,34 @@ type editor struct {
mode os.FileMode
}

func (ed editor) edit(msg string) (string, error) {
func (ed editor) edit(msg string) (string, string, error) {
if err := ioutil.WriteFile(ed.file, []byte(msg), ed.mode); err != nil {
return "", fmt.Errorf("unable to write release message: %v", err)
return "", "", fmt.Errorf("unable to write release message: %v", err)
}
cmd := exec.Command(ed.path, ed.file)
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
return "", fmt.Errorf("edit error: %v", err)
return "", "", fmt.Errorf("edit error: %v", err)
}
data, err := ioutil.ReadFile(ed.file)
return string(data), err
if err != nil {
return "", "", err
}
//validate:
//1. remove comments
//2. remove trailing blank lines
//3. at least one non-empty line
lines := strings.Split(string(data), "\n")
newLines := lines[:0]
for _, line := range lines {
if strings.HasPrefix(strings.TrimPrefix(line, " "), "#") {
continue
}
newLines = append(newLines, line)
}
return newLines[0], strings.Join(newLines[1:], "\n"), nil
}

func remoteBranches() ([]string, error) {
Expand All @@ -96,15 +111,15 @@ func remoteBranches() ([]string, error) {

func getCommitsRange(oldRev, newRev string) ([]*gitlog.Commit, error) {
git := gitlog.New(&gitlog.Config{Path: "."})
commits, err := git.Log(&gitlog.RevRange{newRev, oldRev}, nil)
commits, err := git.Log(&gitlog.RevRange{New: newRev, Old: oldRev}, nil)
if err != nil {
return nil, errors.Wrap(err, "getCommitsRange")
}
return commits, nil
}
func getCommits(rev string) ([]*gitlog.Commit, error) {
git := gitlog.New(&gitlog.Config{Path: "."})
commits, err := git.Log(&gitlog.Rev{rev}, nil)
commits, err := git.Log(&gitlog.Rev{Ref: rev}, nil)
if err != nil {
return nil, errors.Wrap(err, "getCommits")
}
Expand Down Expand Up @@ -188,7 +203,7 @@ func main() {
}

var commits []*gitlog.Commit
version := ""
var version string

if len(releases) < 1 {
var err error
Expand Down Expand Up @@ -226,7 +241,9 @@ func main() {
Default: version,
}
tagName, err := prompt.Run()
if err != nil {
if err == promptui.ErrInterrupt || err == promptui.ErrEOF {
return
} else if err != nil {
panic(err)
}

Expand All @@ -235,28 +252,19 @@ func main() {
panic(err)
}

msg, err := ed.edit(releaseNotes(tagName, commits))
title, body, err := ed.edit(releaseNotes(tagName, commits))
if err != nil {
panic(err)
}
//validate:
//1. remove comments
//2. remove trailing blank lines
//3. at least one non-empty line
lines := strings.Split(msg, "\n")
newLines := lines[:0]
for _, line := range lines {
if strings.HasPrefix(strings.TrimPrefix(line, " "), "#") {
continue
}
newLines = append(newLines, line)
if title == "" || len(body) == 0 {
return
}

release := &github.Release{
Name: newLines[0],
Name: title,
TagName: tagName,
TargetCommitish: commits[0].Hash.Long,
Body: strings.Join(newLines[1:], "\n"),
Body: body,
}
release, err = c.CreateRelease(pr, release)
if err != nil {
Expand Down

0 comments on commit 0f228f6

Please sign in to comment.