handle errors

This commit is contained in:
Celogeek 2024-04-28 21:35:36 +02:00
parent f4501753c5
commit 8233d067ef
Signed by: celogeek
SSH Key Fingerprint: SHA256:njNJLzoLQdbV9PC6ehcruRb0QnEgxABoCYZ+0+aUIYc
8 changed files with 41 additions and 27 deletions

View File

@ -228,7 +228,7 @@ func (c *Converter) isZeroValue(f *flag.Flag, value string) (ok bool, err error)
// Parse all parameters // Parse all parameters
func (c *Converter) Parse() { func (c *Converter) Parse() {
c.Cmd.Parse(os.Args[1:]) _ = c.Cmd.Parse(os.Args[1:])
if c.Options.Help { if c.Options.Help {
c.Cmd.Usage() c.Cmd.Usage()
os.Exit(0) os.Exit(0)
@ -413,7 +413,7 @@ func (c *Converter) Stats() {
runtime.ReadMemStats(&mem) runtime.ReadMemStats(&mem)
if c.Options.Json { if c.Options.Json {
json.NewEncoder(os.Stdout).Encode(map[string]any{ _ = json.NewEncoder(os.Stdout).Encode(map[string]any{
"type": "stats", "type": "stats",
"data": map[string]any{ "data": map[string]any{
"elapse_ms": elapse.Milliseconds(), "elapse_ms": elapse.Milliseconds(),

View File

@ -202,7 +202,9 @@ func (o *Options) LoadConfig() error {
if err != nil { if err != nil {
return nil return nil
} }
defer f.Close() defer func(f *os.File) {
_ = f.Close()
}(f)
err = yaml.NewDecoder(f).Decode(o) err = yaml.NewDecoder(f).Decode(o)
if err != nil && err.Error() != "EOF" { if err != nil && err.Error() != "EOF" {
return err return err
@ -302,7 +304,9 @@ func (o *Options) ShowConfig() string {
// ResetConfig reset all settings to default value // ResetConfig reset all settings to default value
func (o *Options) ResetConfig() error { func (o *Options) ResetConfig() error {
New().SaveConfig() if err := New().SaveConfig(); err != nil {
return err
}
return o.LoadConfig() return o.LoadConfig()
} }
@ -312,7 +316,9 @@ func (o *Options) SaveConfig() error {
if err != nil { if err != nil {
return err return err
} }
defer f.Close() defer func(f *os.File) {
_ = f.Close()
}(f)
return yaml.NewEncoder(f).Encode(o) return yaml.NewEncoder(f).Encode(o)
} }

View File

@ -339,7 +339,9 @@ func (e *EPub) writePart(path string, currentPart, totalParts int, part *epubPar
if err != nil { if err != nil {
return err return err
} }
defer wz.Close() defer func(wz *epubzip.EPUBZip) {
_ = wz.Close()
}(wz)
title := e.Title title := e.Title
if totalParts > 1 { if totalParts > 1 {
@ -429,8 +431,8 @@ func (e *EPub) Write() error {
return nil return nil
} }
defer func() { defer func() {
imgStorage.Close() _ = imgStorage.Close()
imgStorage.Remove() _ = imgStorage.Remove()
}() }()
totalParts := len(epubParts) totalParts := len(epubParts)
@ -466,9 +468,9 @@ func (e *EPub) Write() error {
return err return err
} }
bar.Add(1) _ = bar.Add(1)
} }
bar.Close() _ = bar.Close()
if !e.Json { if !e.Json {
utils.Println() utils.Println()
} }

View File

@ -94,5 +94,5 @@ func (p *coverTitle) Draw(dst draw.Image, src image.Image, _ *gift.Options) {
textLeft = textArea.Min.X textLeft = textArea.Min.X
} }
textTop := textArea.Min.Y + textArea.Dy()/2 + textHeight/4 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))
} }

View File

@ -64,7 +64,7 @@ func (e *EPUBImageProcessor) Load() (images []*epubimage.Image, err error) {
imgStorage, err := epubzip.NewStorageImageWriter(e.ImgStorage(), e.Image.Format) imgStorage, err := epubzip.NewStorageImageWriter(e.ImgStorage(), e.Image.Format)
if err != nil { if err != nil {
bar.Close() _ = bar.Close()
return nil, err return nil, err
} }
@ -84,7 +84,7 @@ func (e *EPUBImageProcessor) Load() (images []*epubimage.Image, err error) {
if !(img.DoublePage && input.Id > 0 && if !(img.DoublePage && input.Id > 0 &&
e.Options.Image.AutoSplitDoublePage && !e.Options.Image.KeepDoublePageIfSplit) { e.Options.Image.AutoSplitDoublePage && !e.Options.Image.KeepDoublePageIfSplit) {
if err = imgStorage.Add(img.EPUBImgPath(), img.Raw, e.Image.Quality); err != nil { 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) utils.Printf("error with %s: %s", input.Name, err)
os.Exit(1) 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} { for i, b := range []bool{e.Image.Manga, !e.Image.Manga} {
img = e.transformImage(input, i+1, b) img = e.transformImage(input, i+1, b)
if err = imgStorage.Add(img.EPUBImgPath(), img.Raw, e.Image.Quality); err != nil { 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) utils.Printf("error with %s: %s", input.Name, err)
os.Exit(1) os.Exit(1)
} }
@ -118,20 +118,20 @@ func (e *EPUBImageProcessor) Load() (images []*epubimage.Image, err error) {
go func() { go func() {
wg.Wait() wg.Wait()
imgStorage.Close() _ = imgStorage.Close()
close(imageOutput) close(imageOutput)
}() }()
for img := range imageOutput { for img := range imageOutput {
if img.Part == 0 { if img.Part == 0 {
bar.Add(1) _ = bar.Add(1)
} }
if e.Image.NoBlankImage && img.IsBlank { if e.Image.NoBlankImage && img.IsBlank {
continue continue
} }
images = append(images, img) images = append(images, img)
} }
bar.Close() _ = bar.Close()
if len(images) == 0 { if len(images) == 0 {
return nil, errNoImagesFound return nil, errNoImagesFound

View File

@ -155,7 +155,7 @@ func (e *EPUBImageProcessor) loadDir() (totalImages int, output chan *task, err
f, err = os.Open(job.Path) f, err = os.Open(job.Path)
if err == nil { if err == nil {
img, _, err = image.Decode(f) 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) totalImages = len(images)
if totalImages == 0 { if totalImages == 0 {
r.Close() _ = r.Close()
err = errNoImagesFound err = errNoImagesFound
return return
} }
@ -248,7 +248,7 @@ func (e *EPUBImageProcessor) loadCbz() (totalImages int, output chan *task, err
if err == nil { if err == nil {
img, _, err = image.Decode(f) img, _, err = image.Decode(f)
} }
f.Close() _ = f.Close()
} }
p, fn := filepath.Split(filepath.Clean(job.F.Name)) 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() { go func() {
wg.Wait() wg.Wait()
close(output) close(output)
r.Close() _ = r.Close()
}() }()
return 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) utils.Printf("\nerror processing image %s: %s\n", e.Input, rerr)
os.Exit(1) os.Exit(1)
} }
defer r.Close() defer func(r *rardecode.ReadCloser) {
_ = r.Close()
}(r)
for { for {
f, rerr := r.Next() f, rerr := r.Next()
if rerr != nil { if rerr != nil {
@ -367,7 +369,7 @@ func (e *EPUBImageProcessor) loadCbr() (totalImages int, output chan *task, err
if err == nil { if err == nil {
img, _, err = image.Decode(f) img, _, err = image.Decode(f)
} }
f.Close() _ = f.Close()
} }
p, fn := filepath.Split(filepath.Clean(job.Name)) p, fn := filepath.Split(filepath.Clean(job.Name))

View File

@ -25,7 +25,7 @@ func NewStorageImageWriter(filename string, format string) (*StorageImageWriter,
func (e *StorageImageWriter) Close() error { func (e *StorageImageWriter) Close() error {
if err := e.fz.Close(); err != nil { if err := e.fz.Close(); err != nil {
e.fh.Close() _ = e.fh.Close()
return err return err
} }
return e.fh.Close() return e.fh.Close()

10
main.go
View File

@ -66,7 +66,9 @@ $ go install github.com/celogeek/go-comic-converter/v%d@%s
} }
if cmd.Options.Save { if cmd.Options.Save {
cmd.Options.SaveConfig() if err := cmd.Options.SaveConfig(); err != nil {
cmd.Fatal(err)
}
utils.Printf( utils.Printf(
"%s%s\n\nSaving to %s\n", "%s%s\n\nSaving to %s\n",
cmd.Options.Header(), cmd.Options.Header(),
@ -82,7 +84,9 @@ $ go install github.com/celogeek/go-comic-converter/v%d@%s
} }
if cmd.Options.Reset { if cmd.Options.Reset {
cmd.Options.ResetConfig() if err := cmd.Options.ResetConfig(); err != nil {
cmd.Fatal(err)
}
utils.Printf( utils.Printf(
"%s%s\n\nReset default to %s\n", "%s%s\n\nReset default to %s\n",
cmd.Options.Header(), cmd.Options.Header(),
@ -97,7 +101,7 @@ $ go install github.com/celogeek/go-comic-converter/v%d@%s
} }
if cmd.Options.Json { 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, "type": "options", "data": cmd.Options,
}) })
} else { } else {