#!/bin/bash # Deploy latest kiosk code. # Always commits to Gitea and restarts kiosk-dev (dev/test machine). # If the production kiosk is reachable, deploys there too. # Usage: ./deploy.sh ["commit message"] KIOSK_LOCAL="jgitta@192.168.88.44" KIOSK_REMOTE="jgitta@100.64.0.1" REPO_DIR="$(cd "$(dirname "$0")" && pwd)" HOME_SRC="$REPO_DIR/home-screen-index.html" HOME_DST="/home/jgitta/kiosk-home/index.html" CONFIG_SRC="$REPO_DIR/config.json" COMMIT_MSG="${1:-deploy: update from kiosk-dev $(date +%Y-%m-%d)}" # Gitea credentials (from credentials.md) GITEA_TOKEN="4fe93c6c62490ef0bb4e4aeec58f47da26752ce8" GITEA_USER="jgitta" inject_config() { local src="$1" local dst="$2" local config="$3" if [ -f "$config" ]; then local config_json=$(cat "$config" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | tr '\n' ' ') sed "s|const config = {.*};|const config = $config_json;|" "$src" > "$dst" echo " Injected config.json into home screen" else cp "$src" "$dst" echo " WARNING: config.json missing — deploying without config injection" fi } echo "==> Syncing home screen to $HOME_DST..." if [ -f "$HOME_SRC" ]; then mkdir -p "$(dirname "$HOME_DST")" inject_config "$HOME_SRC" "$HOME_DST" "$CONFIG_SRC" chown jgitta:jgitta "$HOME_DST" 2>/dev/null || true else echo " WARNING: $HOME_SRC missing — home screen not updated" fi echo "==> Committing and pushing to Gitea..." git -C "$REPO_DIR" add -A git -C "$REPO_DIR" commit -m "$COMMIT_MSG" 2>/dev/null || echo " (nothing new to commit)" git -C "$REPO_DIR" remote set-url origin "https://$GITEA_USER:$GITEA_TOKEN@gitea.jgitta.com/jgitta/senior-kiosk.git" git -C "$REPO_DIR" push origin master || echo " (push failed — check network)" echo "==> Restarting kiosk-dev..." /usr/local/bin/kiosk-restart echo "==> Trying production kiosk..." KIOSK="" if ssh -o ConnectTimeout=5 -o BatchMode=yes $KIOSK_LOCAL "echo ok" &>/dev/null; then KIOSK="$KIOSK_LOCAL" echo " Reaching production via local network" elif ssh -o ConnectTimeout=8 -o BatchMode=yes $KIOSK_REMOTE "echo ok" &>/dev/null; then KIOSK="$KIOSK_REMOTE" echo " Reaching production via Tailscale" else echo " Production kiosk unreachable — skipping (will deploy when online)" fi if [ -n "$KIOSK" ]; then ssh "$KIOSK" " cd /home/jgitta/kiosk-browser git pull # Inject config at deploy time config_json=\$(cat config.json | sed 's/\\\\/\\\\\\\\/g' | sed 's/\"/\\\\\"/g' | tr '\n' ' ') sed \"s|const config = {.*};|const config = \$config_json;|\" home-screen-index.html > /home/jgitta/kiosk-home/index.html /usr/local/bin/kiosk-restart " echo " Production updated." fi echo "==> Deploy complete!"