Skip to content

Commit 9e4dab6

Browse files
feat: improve error handling
1 parent 611d71d commit 9e4dab6

File tree

1 file changed

+24
-58
lines changed

1 file changed

+24
-58
lines changed

cmd/semantic-release/main.go

Lines changed: 24 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"context"
5+
"errors"
56
"flag"
67
"fmt"
78
"github.com/christophwitzko/go-semantic-release"
@@ -13,6 +14,15 @@ import (
1314

1415
var SRVERSION string
1516

17+
func errorHandler(logger *log.Logger) func(error) {
18+
return func(err error) {
19+
if err != nil {
20+
logger.Println(err)
21+
os.Exit(1)
22+
}
23+
}
24+
}
25+
1626
func main() {
1727
token := flag.String("token", os.Getenv("GITHUB_TOKEN"), "github token")
1828
slug := flag.String("slug", os.Getenv("TRAVIS_REPO_SLUG"), "slug of the repository")
@@ -29,104 +39,60 @@ func main() {
2939
}
3040

3141
logger := log.New(os.Stderr, "[semantic-release]: ", 0)
42+
exitIfError := errorHandler(logger)
3243

3344
if *token == "" {
34-
logger.Println("github token missing")
35-
os.Exit(1)
36-
return
45+
exitIfError(errors.New("github token missing"))
3746
}
3847
if *slug == "" {
39-
logger.Println("slug missing")
40-
os.Exit(1)
41-
return
48+
exitIfError(errors.New("slug missing"))
4249
}
4350

4451
repo, nerr := semrel.NewRepository(context.TODO(), *slug, *token)
45-
if nerr != nil {
46-
logger.Println(nerr)
47-
os.Exit(1)
48-
return
49-
}
52+
exitIfError(nerr)
5053

5154
logger.Println("getting default branch...")
5255
defaultBranch, isPrivate, derr := repo.GetInfo()
53-
if derr != nil {
54-
logger.Println(derr)
55-
os.Exit(1)
56-
return
57-
}
56+
exitIfError(derr)
5857
logger.Println("found default branch: " + defaultBranch)
5958

6059
if !*noci {
6160
logger.Println("running CI condition...")
62-
if err := condition.Travis(*token, defaultBranch, isPrivate); err != nil {
63-
logger.Println(err)
64-
os.Exit(1)
65-
return
66-
}
61+
exitIfError(condition.Travis(*token, defaultBranch, isPrivate))
6762
}
6863

6964
logger.Println("getting latest release...")
7065
release, rerr := repo.GetLatestRelease()
71-
if rerr != nil {
72-
logger.Println(rerr)
73-
os.Exit(1)
74-
return
75-
}
66+
exitIfError(rerr)
7667
if release.Version == nil {
77-
logger.Println("found invalid version")
78-
os.Exit(1)
79-
return
68+
exitIfError(errors.New("found invalid version"))
8069
}
8170
logger.Println("found: " + release.Version.String())
8271

8372
logger.Println("getting commits...")
8473
commits, cerr := repo.GetCommits()
85-
if cerr != nil {
86-
logger.Println(cerr)
87-
os.Exit(1)
88-
return
89-
}
74+
exitIfError(cerr)
9075

9176
logger.Println("calculating new version...")
9277
newVer := semrel.GetNewVersion(commits, release)
9378
if newVer == nil {
94-
logger.Println("no change")
95-
os.Exit(1)
96-
return
79+
exitIfError(errors.New("no change"))
9780
}
9881
logger.Println("new version: " + newVer.String())
9982

10083
if *dry {
101-
logger.Println("DRY RUN: no release was created")
102-
os.Exit(1)
103-
return
84+
exitIfError(errors.New("DRY RUN: no release was created"))
10485
}
10586

10687
logger.Println("creating release...")
107-
berr := repo.CreateRelease(commits, release, newVer)
108-
if berr != nil {
109-
logger.Println(berr)
110-
os.Exit(1)
111-
return
112-
}
88+
exitIfError(repo.CreateRelease(commits, release, newVer))
11389

11490
if *ghr {
115-
gerr := ioutil.WriteFile(".ghr", []byte(fmt.Sprintf("-u %s -r %s v%s", repo.Owner, repo.Repo, newVer.String())), 0644)
116-
if gerr != nil {
117-
logger.Println(gerr)
118-
os.Exit(1)
119-
return
120-
}
91+
exitIfError(ioutil.WriteFile(".ghr", []byte(fmt.Sprintf("-u %s -r %s v%s", repo.Owner, repo.Repo, newVer.String())), 0644))
12192
}
12293

12394
if *vFile {
124-
werr := ioutil.WriteFile(".version", []byte(newVer.String()), 0644)
125-
if werr != nil {
126-
logger.Println(werr)
127-
os.Exit(1)
128-
return
129-
}
95+
exitIfError(ioutil.WriteFile(".version", []byte(newVer.String()), 0644))
13096
}
13197

13298
logger.Println("done.")

0 commit comments

Comments
 (0)