aboutsummaryrefslogtreecommitdiffstats
path: root/thumbnailer.go
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2026-05-27 22:48:04 -0700
committerRose Hogenson <rosehogenson@posteo.net>2026-05-27 22:48:04 -0700
commit0029f9367c7697ee97d8de51dca9a67267705f44 (patch)
treeb0cd0d226a9cbdfb70275a70231ffac818175da6 /thumbnailer.go
parenta15f662bac79b1e0c44a0b8cbd2b06139e4916ba (diff)
downloadimgutil-0029f9367c7697ee97d8de51dca9a67267705f44.tar.zst
Correctly handle errors for missing files
Diffstat (limited to 'thumbnailer.go')
-rw-r--r--thumbnailer.go62
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
}
}