diff options
Diffstat (limited to 'bin/up.sh')
-rw-r--r-- | bin/up.sh | 63 |
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" |