diff options
| author | Paul Buetow <paul@buetow.org> | 2026-06-13 10:15:20 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-06-13 10:15:20 +0300 |
| commit | d4971998edae804c39797486be7a342d43e61e5c (patch) | |
| tree | 830c008847704b40b7f45d4c7c620beed03958d6 /src/lib/imagemagick.source.sh | |
| parent | e9437367b8fc7a4cb0ffed6c0a8ba89356a3b9ad (diff) | |
Refactor helper modules for im0
Diffstat (limited to 'src/lib/imagemagick.source.sh')
| -rw-r--r-- | src/lib/imagemagick.source.sh | 71 |
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[@]}" "$@" +} |
