#!/usr/bin/env bash
# Drive the UI, then screenshot. Coordinates are SCREENSHOT PIXELS (what you
# read off shot.png), on both targets.
#   tool/dev/app-drive.sh tap X Y
#   tool/dev/app-drive.sh type "some text"
#   tool/dev/app-drive.sh key Enter|Backspace|Escape|Tab
#   tool/dev/app-drive.sh scroll X Y DY      (DY>0 scrolls down)
#   tool/dev/app-drive.sh back
set -uo pipefail
source "$(dirname "$0")/env.sh"
cmd="${1:-}"; shift || true
device="$(pl_device)"
if [ -n "$device" ]; then
  a() { adb -s "$device" shell input "$@"; }
  case "$cmd" in
    tap)    a tap "$1" "$2" ;;
    type)   a text "$(printf '%s' "$1" | sed 's/ /%s/g')" ;;
    key)    case "$1" in Enter) a keyevent 66;; Backspace) a keyevent 67;; Escape) a keyevent 111;; Tab) a keyevent 61;; *) a keyevent "$1";; esac ;;
    scroll) a swipe "$1" "$2" "$1" "$(( $2 - $3 ))" 300 ;;
    back)   a keyevent KEYCODE_BACK ;;
    *) echo "usage: see header"; exit 2 ;;
  esac
  sleep 1
else
  pl_ensure_chrome || exit 1
  node "$PL_APP_DIR/tool/dev/browser.mjs" "$cmd" "$@" || exit 1
fi
exec "$PL_APP_DIR/tool/dev/app-shot.sh"
