#!/usr/bin/env bash # Screenshots each Clipbin screen in the headless rig, for reviewing the # interface on machines without a display. # # scripts/rig/screenshot-ui.sh [output-dir] [screen...] # # Screens: sessions, session, clips, settings, failed, empty. Uses the sample # library (CLIPBIN_SAMPLE_LIBRARY) except for "empty". set -euo pipefail repo="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" out="${1:-${TMPDIR:-/tmp}/clipbin-screens}" shift || true screens=("$@") [[ ${#screens[@]} -eq 0 ]] && screens=(sessions session clips settings failed empty) mkdir -p "${out}" cargo build --locked -p clipbin-desktop --manifest-path "${repo}/Cargo.toml" app="${repo}/target/debug/clipbin-desktop" for screen in "${screens[@]}"; do env=(CLIPBIN_SAMPLE_LIBRARY=1) case "${screen}" in sessions) ;; session) env+=(CLIPBIN_ROUTE=session:2) ;; clips) env+=(CLIPBIN_ROUTE=clips) ;; settings) env+=(CLIPBIN_ROUTE=settings) ;; failed) env+=(CLIPBIN_SAMPLE_STATUS=failed) ;; empty) env=() ;; *) echo "unknown screen ${screen}" >&2; exit 2 ;; esac CLIPBIN_RIG_WIDTH="${CLIPBIN_RIG_WIDTH:-1600}" CLIPBIN_RIG_HEIGHT="${CLIPBIN_RIG_HEIGHT:-1000}" \ "${repo}/scripts/rig/headless.sh" bash -c " kill \$(cat \"\${CLIPBIN_RIG_DIR}/game.pid\") env ${env[*]} '${app}' > '${out}/${screen}.log' 2>&1 & sleep 3 grim '${out}/${screen}.png' kill %1" 2> /dev/null echo "${out}/${screen}.png" done