summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authortheimpostor <sahirhoda@gmail.com>2024-11-17 17:05:59 -0600
committertheimpostor <sahirhoda@gmail.com>2024-11-17 17:05:59 -0600
commitcb6160624bfc44b18333f9332c13a0cc09abb1f8 (patch)
treeac2b8beea731758724366c0ea1e9f9a446019e12 /main.go
parentd6b845d46ec3e0256dc5f10aedf5d6499b5e3fdc (diff)
refactor error handling
Diffstat (limited to 'main.go')
-rw-r--r--main.go93
1 files changed, 48 insertions, 45 deletions
diff --git a/main.go b/main.go
index 662d98b..b9a96f2 100644
--- a/main.go
+++ b/main.go
@@ -42,18 +42,6 @@ var (
timeoutFlag float64
debugLog *log.Logger
errorLog *log.Logger
-
- // error exit paths:
- // option 1:
- // print message, no timestamp
- // exit non-zero
- // => set returnCode, do not return err from rootCmd.Execute()
- // option 2:
- // print message, no timestamp
- // print usage
- // exit non-zero
- // => return err from rootCmd.Execute()
- returnCode int = 0
)
func encode(fname string, encoder io.WriteCloser) error {
@@ -64,14 +52,14 @@ func encode(fname string, encoder io.WriteCloser) error {
f = os.Stdin
} else {
if f, err = os.Open(fname); err != nil {
- return fmt.Errorf("Failed to open file %v: %v", fname, err)
+ return fmt.Errorf("Failed to open file %s: %w", fname, err)
} else {
defer f.Close()
}
}
if _, err = io.Copy(encoder, f); err != nil {
- return fmt.Errorf("Failed to copy file %v: %v", fname, err)
+ return fmt.Errorf("Failed to copy file %s: %w", fname, err)
}
return nil
@@ -407,20 +395,28 @@ var copyCmd = &cobra.Command{
osc copy [file1 [...fileN]]
With no arguments, will read from stdin.`,
- RunE: func(cmd *cobra.Command, args []string) error {
- if logfile, err := initLogging(); err != nil {
- fmt.Println(err)
- returnCode = 1
- return nil
- } else {
- defer closeSilently(logfile)
- }
- if err := identifyTerm(); err != nil {
- fmt.Println(err)
- returnCode = 1
- return nil
- }
- return copy(args)
+ Run: func(cmd *cobra.Command, args []string) {
+ rc := func() int {
+ if logfile, err := initLogging(); err != nil {
+ errorLog.Println(err)
+ fmt.Println(err)
+ return 1
+ } else {
+ defer closeSilently(logfile)
+ }
+ if err := identifyTerm(); err != nil {
+ errorLog.Println(err)
+ fmt.Println(err)
+ return 1
+ }
+ if err := copy(args); err != nil {
+ errorLog.Println(err)
+ fmt.Println(err)
+ return 1
+ }
+ return 0
+ }()
+ os.Exit(rc)
},
}
@@ -431,20 +427,28 @@ var pasteCmd = &cobra.Command{
osc paste`,
Args: cobra.NoArgs,
- RunE: func(cmd *cobra.Command, args []string) error {
- if logfile, err := initLogging(); err != nil {
- fmt.Println(err)
- returnCode = 1
- return nil
- } else {
- defer closeSilently(logfile)
- }
- if err := identifyTerm(); err != nil {
- fmt.Println(err)
- returnCode = 1
- return nil
- }
- return paste()
+ Run: func(cmd *cobra.Command, args []string) {
+ rc := func() int {
+ if logfile, err := initLogging(); err != nil {
+ errorLog.Println(err)
+ fmt.Println(err)
+ return 1
+ } else {
+ defer closeSilently(logfile)
+ }
+ if err := identifyTerm(); err != nil {
+ errorLog.Println(err)
+ fmt.Println(err)
+ return 1
+ }
+ if err := paste(); err != nil {
+ errorLog.Println(err)
+ fmt.Println(err)
+ return 1
+ }
+ return 0
+ }()
+ os.Exit(rc)
},
}
@@ -493,8 +497,7 @@ func init() {
func main() {
err := rootCmd.Execute()
- if err != nil && returnCode == 0 {
- returnCode = 1
+ if err != nil {
+ os.Exit(1)
}
- os.Exit(returnCode)
}