Browse Source

Refactor main function

Move cleanup and error checking to their own functions.
morganamilo 6 years ago
parent
commit
1739a88be2
1 changed files with 24 additions and 61 deletions
  1. 24 61
      main.go

+ 24 - 61
main.go

@@ -190,75 +190,38 @@ func initAlpmHandle() (err error) {
 	return
 }
 
-func main() {
-	var status int
-	var err error
-
-	if 0 == os.Geteuid() {
-		fmt.Println("Please avoid running yay as root/sudo.")
-	}
-
-	err = cmdArgs.parseCommandLine()
-	if err != nil {
-		fmt.Println(err)
-		status = 1
-		goto cleanup
-	}
-
-	err = setPaths()
-	if err != nil {
-		fmt.Println(err)
-		status = 1
-		goto cleanup
-	}
-
-	err = initConfig()
-	if err != nil {
-		fmt.Println(err)
-		status = 1
-		goto cleanup
-	}
-
-	cmdArgs.extractYayOptions()
-
-	err = initVCS()
-	if err != nil {
-		fmt.Println(err)
-		status = 1
-		goto cleanup
-
-	}
-
-	err = initAlpm()
+func exitOnError(err error) {
 	if err != nil {
-		fmt.Println(err)
-		status = 1
-		goto cleanup
+		if str := err.Error(); str != "" {
+			fmt.Println(str)
+		}
+		cleanup()
+		os.Exit(1)
 	}
+}
 
-	err = handleCmd()
-	if err != nil {
-		if err.Error() != "" {
+func cleanup() int {
+	if alpmHandle != nil {
+		if err := alpmHandle.Release(); err != nil {
 			fmt.Println(err)
+			return 1
 		}
-
-		status = 1
-		goto cleanup
 	}
 
-cleanup:
-	//cleanup
-	//from here on out don't exit if an error occurs
-	//if we fail to save the configuration
-	//at least continue on and try clean up other parts
+	return 0
+}
 
-	if alpmHandle != nil {
-		err = alpmHandle.Release()
-		if err != nil {
-			fmt.Println(err)
-			status = 1
-		}
+func main() {
+	if 0 == os.Geteuid() {
+		fmt.Println("Please avoid running yay as root/sudo.")
 	}
 
-	os.Exit(status)
+	exitOnError(cmdArgs.parseCommandLine())
+	exitOnError(setPaths())
+	exitOnError(initConfig())
+	cmdArgs.extractYayOptions()
+	exitOnError(initVCS())
+	exitOnError(initAlpm())
+	exitOnError(handleCmd())
+	os.Exit(cleanup())
 }