setup.sh: fix read — use -t 0 (stdin TTY), add 5s timeout for piped mode so user can abort or wait

This commit is contained in:
Ada
2026-04-06 10:32:00 -04:00
parent 4379b6c7f9
commit 80752ae502

View File

@@ -34,7 +34,7 @@ if ! command -v curl &> /dev/null; then
exit 1 exit 1
fi fi
# Check for Docker (docker.io or docker-ce) # Check for Docker
DOCKER_INSTALLED=false DOCKER_INSTALLED=false
if command -v docker &> /dev/null; then if command -v docker &> /dev/null; then
DOCKER_INSTALLED=true DOCKER_INSTALLED=true
@@ -75,8 +75,8 @@ echo "Data: SQLite database is stored in a Docker named volume."
echo " Use 'docker compose down -v' to DELETE the database." echo " Use 'docker compose down -v' to DELETE the database."
echo "" echo ""
# Confirm # Confirm — if stdin is a TTY, ask interactively. Otherwise auto-proceed after 5s.
if [ -t 1 ]; then if [ -t 0 ]; then
echo -n "Continue? [Y/n]: " echo -n "Continue? [Y/n]: "
read -r CONFIRM read -r CONFIRM
CONFIRM=${CONFIRM:-Y} CONFIRM=${CONFIRM:-Y}
@@ -85,8 +85,13 @@ if [ -t 1 ]; then
exit 0 exit 0
fi fi
else else
echo "(No TTY — proceeding automatically)" echo -n "Continue? [Y/n] (auto-proceeding in 5s): "
echo "" read -r -t 5 CONFIRM 2>/dev/null || true
CONFIRM=${CONFIRM:-Y}
if [ "$CONFIRM" != "Y" ] && [ "$CONFIRM" != "y" ]; then
echo "Aborted."
exit 0
fi
fi fi
echo "" echo ""
@@ -106,7 +111,7 @@ else
if [ "$DOCKER_INSTALLED" = "false" ]; then if [ "$DOCKER_INSTALLED" = "false" ]; then
echo " Installing docker.io from Debian repos..." echo " Installing docker.io from Debian repos..."
apt-get install -y -qq docker.io > /dev/null 2>&1 || { apt-get install -y -qq docker.io > /dev/null 2>&1 || {
echo " ERROR: Could not install docker.io. Try: apt-get install docker.io" echo " ERROR: Could not install docker.io."
exit 1 exit 1
} }
echo " docker.io installed." echo " docker.io installed."