summaryrefslogtreecommitdiff
path: root/src/lib/imagemagick.source.sh
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-13 10:15:20 +0300
committerPaul Buetow <paul@buetow.org>2026-06-13 10:15:20 +0300
commitd4971998edae804c39797486be7a342d43e61e5c (patch)
tree830c008847704b40b7f45d4c7c620beed03958d6 /src/lib/imagemagick.source.sh
parente9437367b8fc7a4cb0ffed6c0a8ba89356a3b9ad (diff)
Refactor helper modules for im0
Diffstat (limited to 'src/lib/imagemagick.source.sh')
-rw-r--r--src/lib/imagemagick.source.sh71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/lib/imagemagick.source.sh b/src/lib/imagemagick.source.sh
new file mode 100644
index 0000000..cdc909c
--- /dev/null
+++ b/src/lib/imagemagick.source.sh
@@ -0,0 +1,71 @@
+# shellcheck disable=SC2034
+resolve_imagemagick_command() {
+ local -r operation="$1"; shift
+ local -n command_ref="$1"; shift
+
+ command_ref=()
+
+ case "$operation" in
+ convert)
+ if command -v magick >/dev/null 2>&1; then
+ command_ref=(magick)
+ return
+ fi
+ if command -v convert >/dev/null 2>&1; then
+ command_ref=(convert)
+ return
+ fi
+ ;;
+ identify)
+ if command -v magick >/dev/null 2>&1; then
+ command_ref=(magick identify)
+ return
+ fi
+ if command -v identify >/dev/null 2>&1; then
+ command_ref=(identify)
+ return
+ fi
+ if command -v convert >/dev/null 2>&1; then
+ command_ref=(convert)
+ return
+ fi
+ ;;
+ *)
+ printf 'ERROR: Unknown ImageMagick operation %s\n' \
+ "$operation" >&2
+ return 1
+ ;;
+ esac
+
+ printf 'ERROR: ImageMagick is required; install magick or convert\n' >&2
+ return 127
+}
+
+imagemagick() {
+ local -a imagemagick_command=()
+
+ resolve_imagemagick_command convert imagemagick_command || return
+
+ run_with_timeout ImageMagick "$IMAGEMAGICK_TIMEOUT" \
+ "${imagemagick_command[@]}" "$@"
+}
+
+imagemagick_identify() {
+ local -a imagemagick_command=()
+
+ resolve_imagemagick_command identify imagemagick_command || return
+
+ if [ "${imagemagick_command[0]}" = convert ]; then
+ if [[ "${1:-}" = '-verbose' && $# -eq 2 ]]; then
+ run_with_timeout ImageMagick "$IMAGEMAGICK_TIMEOUT" \
+ "${imagemagick_command[@]}" "$2" -verbose info:
+ else
+ run_with_timeout ImageMagick "$IMAGEMAGICK_TIMEOUT" \
+ "${imagemagick_command[@]}" "$@" info:
+ fi
+ return
+ fi
+
+ run_with_timeout ImageMagick "$IMAGEMAGICK_TIMEOUT" \
+ "${imagemagick_command[@]}" "$@"
+}