diff options
| author | Rose Hogenson <rosehogenson@posteo.net> | 2026-05-27 22:48:04 -0700 |
|---|---|---|
| committer | Rose Hogenson <rosehogenson@posteo.net> | 2026-05-27 22:48:04 -0700 |
| commit | 0029f9367c7697ee97d8de51dca9a67267705f44 (patch) | |
| tree | b0cd0d226a9cbdfb70275a70231ffac818175da6 /thumbnailer.go | |
| parent | a15f662bac79b1e0c44a0b8cbd2b06139e4916ba (diff) | |
| download | imgutil-0029f9367c7697ee97d8de51dca9a67267705f44.tar.zst | |
Correctly handle errors for missing files
Diffstat (limited to 'thumbnailer.go')
| -rw-r--r-- | thumbnailer.go | 62 |
1 files changed, 30 insertions, 32 deletions
diff --git a/thumbnailer.go b/thumbnailer.go index 3e1be07..a593550 100644 --- a/thumbnailer.go +++ b/thumbnailer.go @@ -150,17 +150,14 @@ func compositeImages(w io.Writer, images []img, imageWidth, imagesPerRow int) { } func thumbnailFiles(w io.Writer, cols, lines, imagesPerRow int, args []string) error { - var images []img - for _, arg := range args { + images := make([]img, len(args)) + for i, arg := range args { image, err := load(arg) if err != nil { - if errors.Is(err, errNotAnImage) { - continue - } return err } imageString, width := printImg(image, cols, lines) - images = append(images, img{imageString, width, filepath.Base(arg)}) + images[i] = img{imageString, width, filepath.Base(arg)} } compositeImages(w, images, cols, imagesPerRow) return nil @@ -178,6 +175,27 @@ func readDir(d string) ([]string, error) { return filenames, nil } +func thumbnailDir(w io.Writer, cols, lines, imagesPerRow int, dir string) error { + files, err := readDir(dir) + if err != nil { + return err + } + var images []img + for _, file := range files { + image, err := load(file) + if err != nil { + if errors.Is(err, errNotAnImage) { + continue + } + return err + } + imageString, width := printImg(image, cols, lines) + images = append(images, img{imageString, width, filepath.Base(file)}) + } + compositeImages(w, images, cols, imagesPerRow) + return nil +} + func thumbnailer(args []string) error { cols := *x lines := *y @@ -192,27 +210,9 @@ func thumbnailer(args []string) error { imagesPerRow := termCols / (cols + 1) var files, dirs []string - switch len(args) { - case 0: - files, err = readDir(".") - if err != nil { - return err - } - case 1: - arg := args[0] - isDir, err := isDir(arg) - if err != nil { - return err - } - if isDir { - files, err = readDir(arg) - if err != nil { - return err - } - } else { - files = []string{arg} - } - default: + if len(args) == 0 { + dirs = []string{"."} + } else { for _, arg := range args { isDir, err := isDir(arg) if err != nil { @@ -237,12 +237,10 @@ func thumbnailer(args []string) error { if i > 0 { fmt.Fprintln(w) } - fmt.Fprintf(w, "%s:\n", d) - dirFiles, err := readDir(d) - if err != nil { - return err + if len(dirs) > 1 { + fmt.Fprintf(w, "%s:\n", d) } - if err := thumbnailFiles(w, cols, lines, imagesPerRow, dirFiles); err != nil { + if err := thumbnailDir(w, cols, lines, imagesPerRow, d); err != nil { return err } } |
