#!/usr/bin/env bash
set -Eeuo pipefail

TAG="${1:-${RELEASE_TAG:-}}"
SRC_GIF="${2:-}"
DEMO_BASENAME="${DEMO_BASENAME:-imaegete-demo.gif}"

if [ -z "$TAG" ] || [ -z "$SRC_GIF" ]; then
  echo "usage: $0 <tag> /path/to/demo.gif" >&2
  exit 2
fi

if [ ! -f "$SRC_GIF" ]; then
  echo "demo gif not found: $SRC_GIF" >&2
  exit 1
fi

if [ -z "${PUBLISH_SSH_TARGET:-}" ]; then
  echo "set PUBLISH_SSH_TARGET=user@host to upload the README demo media" >&2
  exit 1
fi

versioned_tag="${TAG#refs/tags/}"
release_remote_dir="${PUBLISH_RELEASE_REMOTE_DIR:-/srv/www/downloads/actx/Imaegete/releases/${versioned_tag}}"
latest_remote_dir="${PUBLISH_LATEST_REMOTE_DIR:-/srv/www/downloads/actx/Imaegete/latest}"
release_public_url="${PUBLISH_RELEASE_PUBLIC_URL:-https://latebrum.com/downloads/actx/Imaegete/releases/${versioned_tag}/${DEMO_BASENAME}}"
latest_public_url="${PUBLISH_LATEST_PUBLIC_URL:-https://latebrum.com/downloads/actx/Imaegete/latest/${DEMO_BASENAME}}"

tmpdir="$(mktemp -d)"
cleanup() {
  rm -rf "$tmpdir"
}
trap cleanup EXIT

sha256sum "$SRC_GIF" | sed "s#  .*#  ${DEMO_BASENAME}#" > "$tmpdir/${DEMO_BASENAME}.sha256"

ssh "$PUBLISH_SSH_TARGET" "mkdir -p '$release_remote_dir' '$latest_remote_dir'"
scp "$SRC_GIF" "$PUBLISH_SSH_TARGET:$release_remote_dir/$DEMO_BASENAME"
scp "$SRC_GIF" "$PUBLISH_SSH_TARGET:$latest_remote_dir/$DEMO_BASENAME"
scp "$tmpdir/${DEMO_BASENAME}.sha256" "$PUBLISH_SSH_TARGET:$release_remote_dir/${DEMO_BASENAME}.sha256"
scp "$tmpdir/${DEMO_BASENAME}.sha256" "$PUBLISH_SSH_TARGET:$latest_remote_dir/${DEMO_BASENAME}.sha256"

echo "Published README demo media:"
echo "  $release_public_url"
echo "  $latest_public_url"
