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 {