From 8233d067eff7aa72edf86d563c6f2dbe4eeced70 Mon Sep 17 00:00:00 2001
From: celogeek <65178+celogeek@users.noreply.github.com>
Date: Sun, 28 Apr 2024 21:35:36 +0200
Subject: [PATCH] handle errors

---
 internal/converter/converter.go                    |  4 ++--
 internal/converter/options/converter_options.go    | 12 +++++++++---
 internal/epub/epub.go                              | 12 +++++++-----
 .../imagefilters/epub_image_filters_cover_title.go |  2 +-
 .../epub/imageprocessor/epub_image_processor.go    | 12 ++++++------
 .../imageprocessor/epub_image_processor_loader.go  | 14 ++++++++------
 internal/epub/zip/epub_zip_storage_image.go        |  2 +-
 main.go                                            | 10 +++++++---
 8 files changed, 41 insertions(+), 27 deletions(-)

diff --git a/internal/converter/converter.go b/internal/converter/converter.go
index 2c2aac5..3909416 100644
--- a/internal/converter/converter.go
+++ b/internal/converter/converter.go
@@ -228,7 +228,7 @@ func (c *Converter) isZeroValue(f *flag.Flag, value string) (ok bool, err error)
 
 // Parse all parameters
 func (c *Converter) Parse() {
-	c.Cmd.Parse(os.Args[1:])
+	_ = c.Cmd.Parse(os.Args[1:])
 	if c.Options.Help {
 		c.Cmd.Usage()
 		os.Exit(0)
@@ -413,7 +413,7 @@ func (c *Converter) Stats() {
 	runtime.ReadMemStats(&mem)
 
 	if c.Options.Json {
-		json.NewEncoder(os.Stdout).Encode(map[string]any{
+		_ = json.NewEncoder(os.Stdout).Encode(map[string]any{
 			"type": "stats",
 			"data": map[string]any{
 				"elapse_ms":       elapse.Milliseconds(),
diff --git a/internal/converter/options/converter_options.go b/internal/converter/options/converter_options.go
index cfd89ec..d67a6bd 100644
--- a/internal/converter/options/converter_options.go
+++ b/internal/converter/options/converter_options.go
@@ -202,7 +202,9 @@ func (o *Options) LoadConfig() error {
 	if err != nil {
 		return nil
 	}
-	defer f.Close()
+	defer func(f *os.File) {
+		_ = f.Close()
+	}(f)
 	err = yaml.NewDecoder(f).Decode(o)
 	if err != nil && err.Error() != "EOF" {
 		return err
@@ -302,7 +304,9 @@ func (o *Options) ShowConfig() string {
 
 // ResetConfig reset all settings to default value
 func (o *Options) ResetConfig() error {
-	New().SaveConfig()
+	if err := New().SaveConfig(); err != nil {
+		return err
+	}
 	return o.LoadConfig()
 }
 
@@ -312,7 +316,9 @@ func (o *Options) SaveConfig() error {
 	if err != nil {
 		return err
 	}
-	defer f.Close()
+	defer func(f *os.File) {
+		_ = f.Close()
+	}(f)
 	return yaml.NewEncoder(f).Encode(o)
 }
 
diff --git a/internal/epub/epub.go b/internal/epub/epub.go
index b047476..2d2ef14 100644
--- a/internal/epub/epub.go
+++ b/internal/epub/epub.go
@@ -339,7 +339,9 @@ func (e *EPub) writePart(path string, currentPart, totalParts int, part *epubPar
 	if err != nil {
 		return err
 	}
-	defer wz.Close()
+	defer func(wz *epubzip.EPUBZip) {
+		_ = wz.Close()
+	}(wz)
 
 	title := e.Title
 	if totalParts > 1 {
@@ -429,8 +431,8 @@ func (e *EPub) Write() error {
 		return nil
 	}
 	defer func() {
-		imgStorage.Close()
-		imgStorage.Remove()
+		_ = imgStorage.Close()
+		_ = imgStorage.Remove()
 	}()
 
 	totalParts := len(epubParts)
@@ -466,9 +468,9 @@ func (e *EPub) Write() error {
 			return err
 		}
 
-		bar.Add(1)
+		_ = bar.Add(1)
 	}
-	bar.Close()
+	_ = bar.Close()
 	if !e.Json {
 		utils.Println()
 	}
diff --git a/internal/epub/imagefilters/epub_image_filters_cover_title.go b/internal/epub/imagefilters/epub_image_filters_cover_title.go
index 678b8e0..7692e91 100644
--- a/internal/epub/imagefilters/epub_image_filters_cover_title.go
+++ b/internal/epub/imagefilters/epub_image_filters_cover_title.go
@@ -94,5 +94,5 @@ func (p *coverTitle) Draw(dst draw.Image, src image.Image, _ *gift.Options) {
 		textLeft = textArea.Min.X
 	}
 	textTop := textArea.Min.Y + textArea.Dy()/2 + textHeight/4
-	c.DrawString(p.title, freetype.Pt(textLeft, textTop))
+	_, _ = c.DrawString(p.title, freetype.Pt(textLeft, textTop))
 }
diff --git a/internal/epub/imageprocessor/epub_image_processor.go b/internal/epub/imageprocessor/epub_image_processor.go
index 2a60eb0..12c4943 100644
--- a/internal/epub/imageprocessor/epub_image_processor.go
+++ b/internal/epub/imageprocessor/epub_image_processor.go
@@ -64,7 +64,7 @@ func (e *EPUBImageProcessor) Load() (images []*epubimage.Image, err error) {
 
 	imgStorage, err := epubzip.NewStorageImageWriter(e.ImgStorage(), e.Image.Format)
 	if err != nil {
-		bar.Close()
+		_ = bar.Close()
 		return nil, err
 	}
 
@@ -84,7 +84,7 @@ func (e *EPUBImageProcessor) Load() (images []*epubimage.Image, err error) {
 				if !(img.DoublePage && input.Id > 0 &&
 					e.Options.Image.AutoSplitDoublePage && !e.Options.Image.KeepDoublePageIfSplit) {
 					if err = imgStorage.Add(img.EPUBImgPath(), img.Raw, e.Image.Quality); err != nil {
-						bar.Close()
+						_ = bar.Close()
 						utils.Printf("error with %s: %s", input.Name, err)
 						os.Exit(1)
 					}
@@ -105,7 +105,7 @@ func (e *EPUBImageProcessor) Load() (images []*epubimage.Image, err error) {
 				for i, b := range []bool{e.Image.Manga, !e.Image.Manga} {
 					img = e.transformImage(input, i+1, b)
 					if err = imgStorage.Add(img.EPUBImgPath(), img.Raw, e.Image.Quality); err != nil {
-						bar.Close()
+						_ = bar.Close()
 						utils.Printf("error with %s: %s", input.Name, err)
 						os.Exit(1)
 					}
@@ -118,20 +118,20 @@ func (e *EPUBImageProcessor) Load() (images []*epubimage.Image, err error) {
 
 	go func() {
 		wg.Wait()
-		imgStorage.Close()
+		_ = imgStorage.Close()
 		close(imageOutput)
 	}()
 
 	for img := range imageOutput {
 		if img.Part == 0 {
-			bar.Add(1)
+			_ = bar.Add(1)
 		}
 		if e.Image.NoBlankImage && img.IsBlank {
 			continue
 		}
 		images = append(images, img)
 	}
-	bar.Close()
+	_ = bar.Close()
 
 	if len(images) == 0 {
 		return nil, errNoImagesFound
diff --git a/internal/epub/imageprocessor/epub_image_processor_loader.go b/internal/epub/imageprocessor/epub_image_processor_loader.go
index 50a08df..da610f0 100644
--- a/internal/epub/imageprocessor/epub_image_processor_loader.go
+++ b/internal/epub/imageprocessor/epub_image_processor_loader.go
@@ -155,7 +155,7 @@ func (e *EPUBImageProcessor) loadDir() (totalImages int, output chan *task, err
 					f, err = os.Open(job.Path)
 					if err == nil {
 						img, _, err = image.Decode(f)
-						f.Close()
+						_ = f.Close()
 					}
 				}
 
@@ -205,7 +205,7 @@ func (e *EPUBImageProcessor) loadCbz() (totalImages int, output chan *task, err
 	totalImages = len(images)
 
 	if totalImages == 0 {
-		r.Close()
+		_ = r.Close()
 		err = errNoImagesFound
 		return
 	}
@@ -248,7 +248,7 @@ func (e *EPUBImageProcessor) loadCbz() (totalImages int, output chan *task, err
 					if err == nil {
 						img, _, err = image.Decode(f)
 					}
-					f.Close()
+					_ = f.Close()
 				}
 
 				p, fn := filepath.Split(filepath.Clean(job.F.Name))
@@ -269,7 +269,7 @@ func (e *EPUBImageProcessor) loadCbz() (totalImages int, output chan *task, err
 	go func() {
 		wg.Wait()
 		close(output)
-		r.Close()
+		_ = r.Close()
 	}()
 	return
 }
@@ -320,7 +320,9 @@ func (e *EPUBImageProcessor) loadCbr() (totalImages int, output chan *task, err
 				utils.Printf("\nerror processing image %s: %s\n", e.Input, rerr)
 				os.Exit(1)
 			}
-			defer r.Close()
+			defer func(r *rardecode.ReadCloser) {
+				_ = r.Close()
+			}(r)
 			for {
 				f, rerr := r.Next()
 				if rerr != nil {
@@ -367,7 +369,7 @@ func (e *EPUBImageProcessor) loadCbr() (totalImages int, output chan *task, err
 					if err == nil {
 						img, _, err = image.Decode(f)
 					}
-					f.Close()
+					_ = f.Close()
 				}
 
 				p, fn := filepath.Split(filepath.Clean(job.Name))
diff --git a/internal/epub/zip/epub_zip_storage_image.go b/internal/epub/zip/epub_zip_storage_image.go
index 50c3c7f..dd918cd 100644
--- a/internal/epub/zip/epub_zip_storage_image.go
+++ b/internal/epub/zip/epub_zip_storage_image.go
@@ -25,7 +25,7 @@ func NewStorageImageWriter(filename string, format string) (*StorageImageWriter,
 
 func (e *StorageImageWriter) Close() error {
 	if err := e.fz.Close(); err != nil {
-		e.fh.Close()
+		_ = e.fh.Close()
 		return err
 	}
 	return e.fh.Close()
diff --git a/main.go b/main.go
index 346fd8e..0181f87 100644
--- a/main.go
+++ b/main.go
@@ -66,7 +66,9 @@ $ go install github.com/celogeek/go-comic-converter/v%d@%s
 	}
 
 	if cmd.Options.Save {
-		cmd.Options.SaveConfig()
+		if err := cmd.Options.SaveConfig(); err != nil {
+			cmd.Fatal(err)
+		}
 		utils.Printf(
 			"%s%s\n\nSaving to %s\n",
 			cmd.Options.Header(),
@@ -82,7 +84,9 @@ $ go install github.com/celogeek/go-comic-converter/v%d@%s
 	}
 
 	if cmd.Options.Reset {
-		cmd.Options.ResetConfig()
+		if err := cmd.Options.ResetConfig(); err != nil {
+			cmd.Fatal(err)
+		}
 		utils.Printf(
 			"%s%s\n\nReset default to %s\n",
 			cmd.Options.Header(),
@@ -97,7 +101,7 @@ $ go install github.com/celogeek/go-comic-converter/v%d@%s
 	}
 
 	if cmd.Options.Json {
-		json.NewEncoder(os.Stdout).Encode(map[string]any{
+		_ = json.NewEncoder(os.Stdout).Encode(map[string]any{
 			"type": "options", "data": cmd.Options,
 		})
 	} else {