#!/usr/bin/env bash
# Real demos for P091 "Why Python Web Scraping Returns Nothing (and the Fix)". Runs on the Mac (Docker Desktop).
# Two containers on their own internal Docker network (no internet):
#   ce-p091-shop    Ana's tea shop (lab/shop/server.py, Python's standard library), reachable as shop.test
#   ce-p091-laptop  Ana's laptop: Microsoft's Playwright image (Ubuntu 24.04, Python 3.12, Chromium) with a
#                   virtual environment holding requests, Beautiful Soup, httpx and Playwright (lab/Dockerfile)
# Only our own lab shop is ever scraped. Every command shown is typed into a real interactive bash in a pty
# (demo_driver.py).
set -euo pipefail
cd "$(dirname "$0")"
P=ce-p091
cleanup() { docker rm -f $P-laptop $P-shop >/dev/null 2>&1 || true; docker network rm $P >/dev/null 2>&1 || true; }
cleanup
[ -n "${KEEP:-}" ] || trap cleanup EXIT
docker build -q -t $P-laptop lab >/dev/null
docker network create --internal $P >/dev/null
docker run -d --name $P-shop --hostname shop --network $P --network-alias shop.test \
  -v "$PWD/lab/shop:/srv/shop:ro" python:3.12-slim python3 /srv/shop/server.py >/dev/null
docker run -d --name $P-laptop --hostname laptop --network $P $P-laptop sleep infinity >/dev/null
for i in $(seq 30); do docker exec $P-laptop curl -sf -o /dev/null http://shop.test/robots.txt && break; sleep 1; done
python3 - "$P" < demo_driver.py
