#!/bin/sh
# cl-tty demo launcher
# Sets raw terminal mode, runs the demo, restores terminal on exit.
# This is needed because SBCL's --script mode + run-program combo
# can't reliably set raw mode from inside the Lisp process.

SAVED=$(stty -g 2>/dev/null)
if [ -z "$SAVED" ]; then
    echo "ERROR: Not running in a real terminal." >&2
    echo "       Try: sbcl --script demo.lisp" >&2
    exit 1
fi

cleanup() {
    stty "$SAVED" 2>/dev/null
}
trap cleanup EXIT INT TERM

stty raw -echo -isig -icanon min 1 time 0 2>/dev/null
sbcl --script "$(dirname "$0")/demo.lisp"
