Skip to content

Commit 9beb3f2

Browse files
refactor: cleanup and simplify main function
1 parent 12d68e6 commit 9beb3f2

File tree

1 file changed

+28
-29
lines changed

1 file changed

+28
-29
lines changed

cmd/semantic-release/main.go

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package main
33
import (
44
"errors"
55
"fmt"
6-
"io/ioutil"
76
"log"
87
"os"
98
"os/signal"
@@ -23,22 +22,23 @@ import (
2322
// SRVERSION is the semantic-release version (added at compile time)
2423
var SRVERSION string
2524

25+
var logger = log.New(os.Stderr, "[go-semantic-release]: ", 0)
26+
2627
var exitHandler func()
2728

28-
func errorHandler(logger *log.Logger) func(error, ...int) {
29-
return func(err error, exitCode ...int) {
30-
if err != nil {
31-
logger.Println(err)
32-
if exitHandler != nil {
33-
exitHandler()
34-
}
35-
if len(exitCode) == 1 {
36-
os.Exit(exitCode[0])
37-
return
38-
}
39-
os.Exit(1)
40-
}
29+
func exitIfError(err error, exitCode ...int) {
30+
if err == nil {
31+
return
32+
}
33+
logger.Println(err)
34+
if exitHandler != nil {
35+
exitHandler()
4136
}
37+
if len(exitCode) == 1 {
38+
os.Exit(exitCode[0])
39+
return
40+
}
41+
os.Exit(1)
4242
}
4343

4444
func main() {
@@ -53,14 +53,14 @@ func main() {
5353
cobra.OnInitialize(func() {
5454
err := config.InitConfig(cmd)
5555
if err != nil {
56-
fmt.Printf("\nConfig error: %s\n", err.Error())
56+
logger.Printf("Config error: %s", err.Error())
5757
os.Exit(1)
5858
return
5959
}
6060
})
6161
err := cmd.Execute()
6262
if err != nil {
63-
fmt.Printf("\n%s\n", err.Error())
63+
logger.Printf("ERROR: %s", err.Error())
6464
os.Exit(1)
6565
}
6666
}
@@ -69,19 +69,17 @@ func mergeConfigWithDefaults(defaults, conf map[string]string) {
6969
for k, v := range conf {
7070
defaults[k] = v
7171
// case-insensitive overwrite default values
72-
kLower := strings.ToLower(k)
72+
keyLower := strings.ToLower(k)
7373
for dk := range defaults {
74-
if strings.ToLower(dk) == kLower && dk != k {
74+
if strings.ToLower(dk) == keyLower && dk != k {
7575
defaults[dk] = v
7676
}
7777
}
7878
}
7979
}
8080

81+
//gocyclo:ignore
8182
func cliHandler(cmd *cobra.Command, args []string) {
82-
logger := log.New(os.Stderr, "[go-semantic-release]: ", 0)
83-
exitIfError := errorHandler(logger)
84-
8583
logger.Printf("version: %s\n", SRVERSION)
8684

8785
conf, err := config.NewConfig(cmd)
@@ -98,14 +96,15 @@ func cliHandler(cmd *cobra.Command, args []string) {
9896
c := make(chan os.Signal, 1)
9997
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
10098
go func() {
101-
<-c
102-
exitIfError(errors.New("terminating..."))
99+
termSignal := <-c
100+
logger.Println("terminating...")
101+
exitIfError(fmt.Errorf("received signal: %s", termSignal))
103102
}()
104103

105104
if conf.DownloadPlugins {
106105
exitIfError(pluginManager.FetchAllPlugins())
107106
logger.Println("all plugins are downloaded")
108-
os.Exit(0)
107+
return
109108
}
110109

111110
ci, err := pluginManager.GetCICondition()
@@ -255,18 +254,18 @@ func cliHandler(cmd *cobra.Command, args []string) {
255254
if conf.Changelog != "" {
256255
oldFile := make([]byte, 0)
257256
if conf.PrependChangelog {
258-
oldFileData, err := ioutil.ReadFile(conf.Changelog)
257+
oldFileData, err := os.ReadFile(conf.Changelog)
259258
if err == nil {
260259
oldFile = append([]byte("\n"), oldFileData...)
261260
}
262261
}
263262
changelogData := append([]byte(changelogRes), oldFile...)
264-
exitIfError(ioutil.WriteFile(conf.Changelog, changelogData, 0o644))
263+
exitIfError(os.WriteFile(conf.Changelog, changelogData, 0o644))
265264
}
266265

267266
if conf.Dry {
268267
if conf.VersionFile {
269-
exitIfError(ioutil.WriteFile(".version-unreleased", []byte(newVer), 0o644))
268+
exitIfError(os.WriteFile(".version-unreleased", []byte(newVer), 0o644))
270269
}
271270
exitIfError(errors.New("DRY RUN: no release was created"), 0)
272271
}
@@ -282,11 +281,11 @@ func cliHandler(cmd *cobra.Command, args []string) {
282281
exitIfError(prov.CreateRelease(newRelease))
283282

284283
if conf.Ghr {
285-
exitIfError(ioutil.WriteFile(".ghr", []byte(fmt.Sprintf("-u %s -r %s v%s", repoInfo.Owner, repoInfo.Repo, newVer)), 0o644))
284+
exitIfError(os.WriteFile(".ghr", []byte(fmt.Sprintf("-u %s -r %s v%s", repoInfo.Owner, repoInfo.Repo, newVer)), 0o644))
286285
}
287286

288287
if conf.VersionFile {
289-
exitIfError(ioutil.WriteFile(".version", []byte(newVer), 0o644))
288+
exitIfError(os.WriteFile(".version", []byte(newVer), 0o644))
290289
}
291290

292291
if len(conf.UpdateFiles) == 0 && len(conf.FilesUpdaterPlugins) > 0 {

0 commit comments

Comments
 (0)