From 5999ca53f255fc787c113b0a93a0a341548e1f2e Mon Sep 17 00:00:00 2001
From: Knut Ahlers <knut@ahlers.me>
Date: Tue, 28 Jan 2025 12:50:40 +0100
Subject: [PATCH] Add imgshare command

Signed-off-by: Knut Ahlers <knut@ahlers.me>
---
 bin/imgshare | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)
 create mode 100755 bin/imgshare

diff --git a/bin/imgshare b/bin/imgshare
new file mode 100755
index 0000000..6713ecc
--- /dev/null
+++ b/bin/imgshare
@@ -0,0 +1,59 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+: ${COPY:=0}   # Copy URL to clipboard
+: ${DIRECT:=0} # Remove hash from URL
+: ${TRIM:=0}   # Trim Image to content
+
+source ~/bin/script_framework.sh
+
+usage="$(basename $0) [-cdt] [image]"
+
+while getopts "cdt" opt; do
+  case "${opt}" in
+  c) COPY=1 ;;
+  d) DIRECT=1 ;;
+  t) TRIM=1 ;;
+  *) fatal "${usage}" ;;
+  esac
+done
+
+source_file=${1:-}
+deletions=()
+
+function exec_deletions() {
+  [ ${#deletions[@]} -gt 0 ] || return
+  rm "${deletions[@]}"
+}
+
+trap exec_deletions EXIT
+
+if ! [[ -f ${source_file} ]]; then
+  step "Reading source-file from clipboard..."
+  tmp_src=$(mktemp --suffix .png XXXXXXXX)
+  pbpaste -t image/png >${tmp_src}
+  source_file=${tmp_src}
+  deletions+=(${tmp_src})
+fi
+
+if [ $TRIM -eq 1 ]; then
+  step "Trimming source-file..."
+  trim_file=$(mktemp --suffix .png XXXXXXXX)
+  magick ${source_file} -fuzz 2% -trim ${trim_file}
+  source_file=${trim_file}
+  deletions+=(${trim_file})
+fi
+
+step "Sharing image..."
+url=$(share ${source_file})
+
+if [ $DIRECT -eq 1 ]; then
+  url=$(sed 's/#//' <<<"${url}")
+fi
+
+if [ $COPY -eq 1 ]; then
+  step "Copying URL..."
+  pbcopy <<<"${url}"
+else
+  echo "${url}"
+fi