summary refs log tree commit diff
path: root/bin/up.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bin/up.sh')
-rw-r--r--bin/up.sh63
1 files changed, 63 insertions, 0 deletions
diff --git a/bin/up.sh b/bin/up.sh
new file mode 100644
index 00000000..ef3ff6c7
--- /dev/null
+++ b/bin/up.sh
@@ -0,0 +1,63 @@
+#!/bin/sh
+set -eu
+
+readonly Host='temp.causal.agency'
+
+upload() {
+	local src ext ts rand url
+	src=$1
+	ext=${src##*.}
+	ts=$(date +'%s')
+	rand=$(openssl rand -hex 4)
+	url=$(printf '%s/%x%s.%s' "$Host" "$ts" "$rand" "$ext")
+	scp -q "$src" "${Host}:/usr/local/www/${url}"
+	echo "https://${url}"
+}
+
+temp() {
+	temp=$(mktemp -d)
+	trap "rm -r '$temp'" EXIT
+}
+
+uploadText() {
+	temp
+	cat > "${temp}/input.txt"
+	upload "${temp}/input.txt"
+}
+
+uploadCommand() {
+	temp
+	echo "$ $*" > "${temp}/exec.txt"
+	"$@" >> "${temp}/exec.txt"
+	upload "${temp}/exec.txt"
+}
+
+uploadHi() {
+	temp
+	hi -f html -o document,anchor,tab=4 "$@" > "${temp}/hi.html"
+	upload "${temp}/hi.html"
+}
+
+uploadScreen() {
+	temp
+	screencapture -i "$@" "${temp}/capture.png"
+	pngo "${temp}/capture.png" || true
+	upload "${temp}/capture.png"
+}
+
+args=$(setopt 'chs' "$@")
+eval set -- "$args"
+for opt; do
+	case "$opt" in
+		(-c) shift; fn=uploadCommand;;
+		(-h) shift; fn=uploadHi;;
+		(-s) shift; fn=uploadScreen;;
+		(--) shift; break;;
+	esac
+done
+[ $# -eq 0 ] && : ${fn:=uploadText}
+: ${fn:=upload}
+
+url=$($fn "$@")
+printf '%s' "$url" | pbcopy || true
+echo "$url"