diff options
Diffstat (limited to 'bin/up.sh')
-rw-r--r-- | bin/up.sh | 64 |
1 files changed, 41 insertions, 23 deletions
diff --git a/bin/up.sh b/bin/up.sh index e65d4522..6305b1ee 100644 --- a/bin/up.sh +++ b/bin/up.sh @@ -2,68 +2,86 @@ set -eu readonly Host='temp.causal.agency' +readonly Root='/var/www' +temp= +temp() { + temp=$(mktemp -d) + trap 'rm -r "$temp"' EXIT +} + +warn= 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}" + name=$(printf '%x%s' "$(date +%s)" "$(openssl rand -hex 4)") + url="${Host}/${name}.${ext}" + scp -q "$src" "${Host}:${Root}/${url}" + if test -n "$warn"; then + test -n "$temp" || temp + cat >"${temp}/warn.html" <<-EOF + <!DOCTYPE html> + <title>${warn}</title> + <meta http-equiv="refresh" content="0;url=${name}.${ext}"> + EOF + url="${Host}/${name}.html" + scp -q "${temp}/warn.html" "${Host}:${Root}/${url}" + fi echo "https://${url}" } -temp() { - temp=$(mktemp -d) - trap "rm -r '$temp'" EXIT -} - uploadText() { temp - cat > "${temp}/input.txt" + cat >"${temp}/input.txt" upload "${temp}/input.txt" } uploadCommand() { temp - echo "$ $*" > "${temp}/exec.txt" - "$@" >> "${temp}/exec.txt" 2>&1 || true + echo "$ $1" >"${temp}/exec.txt" + $SHELL -c "$1" >>"${temp}/exec.txt" 2>&1 || true upload "${temp}/exec.txt" } -uploadHi() { +uploadHilex() { temp - hi -f html -o document,anchor,tab=4 "$@" > "${temp}/hi.html" - upload "${temp}/hi.html" + hilex -f html -o document,tab=4 "$@" >"${temp}/hilex.html" + upload "${temp}/hilex.html" } uploadScreen() { temp - screencapture -i "$@" "${temp}/capture.png" - pngo "${temp}/capture.png" || true + if command -v screencapture >/dev/null; then + screencapture -i "$@" "${temp}/capture.png" + else + scrot -s "$@" "${temp}/capture.png" + fi + pngo "${temp}/capture.png" upload "${temp}/capture.png" } uploadTerminal() { temp - cat > "${temp}/term.html" <<-EOF + cat >"${temp}/term.html" <<-EOF <!DOCTYPE html> + <meta charset="utf-8"> <title>${1}</title> <style> $(scheme -s) </style> EOF - ptee "$@" | shotty -Bs >> "${temp}/term.html" + ptee $SHELL -c "$1" >"${temp}/term.pty" + shotty -Bs "${temp}/term.pty" >>"${temp}/term.html" upload "${temp}/term.html" } -while getopts 'chst' opt; do - case "$opt" in +while getopts 'chstw:' opt; do + case $opt in (c) fn=uploadCommand;; - (h) fn=uploadHi;; + (h) fn=uploadHilex;; (s) fn=uploadScreen;; (t) fn=uploadTerminal;; + (w) warn=$OPTARG;; (?) exit 1;; esac done |