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.sh58
1 files changed, 58 insertions, 0 deletions
diff --git a/bin/up.sh b/bin/up.sh
new file mode 100644
index 00000000..1ca34a1c
--- /dev/null
+++ b/bin/up.sh
@@ -0,0 +1,58 @@
+#!/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 rmtemp EXIT
+}
+rmtemp() {
+	rm -r "$temp"
+}
+
+uploadText() {
+	temp
+	cat > "${temp}/input.txt"
+	upload "${temp}/input.txt"
+}
+
+uploadHi() {
+	temp
+	hi -f html -o document,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=$(getopt 'hs' $*)
+set -- $args
+for opt; do
+	case "$opt" in
+		(-h) shift; fn=uploadHi;;
+		(-s) shift; fn=uploadScreen;;
+		(--) shift; break;;
+	esac
+done
+[ $# -eq 0 ] && : ${fn:=uploadText}
+: ${fn:=upload}
+
+url=$($fn "$@")
+echo "$url" | pbcopy || true
+echo "$url"