Files
sigilbox/podman-run.sh

62 lines
1.3 KiB
Bash
Raw Normal View History

2026-05-15 09:12:28 -07:00
#!/bin/bash
set -euo pipefail
# Podman helper for local-page-archiver with headful Chromium support.
# Usage:
# ./podman-run.sh archive <URL> [options]
# ./podman-run.sh headful-archive <URL> [options]
IMAGE_NAME="local-page-archiver"
ARCHIVE_DIR="${ARCHIVE_DIR:-$(pwd)/archives}"
build_image() {
echo "Building ${IMAGE_NAME}..."
podman build -t "${IMAGE_NAME}" .
}
run_headless() {
mkdir -p "${ARCHIVE_DIR}"
podman run --rm \
-e "ARCHIVE_PATH=/archives" \
-v "${ARCHIVE_DIR}:/archives:Z" \
"${IMAGE_NAME}" \
"$@"
}
run_headful() {
mkdir -p "${ARCHIVE_DIR}"
podman run --rm \
--entrypoint sh \
-e "ARCHIVE_PATH=/archives" \
-e "DISPLAY=:99" \
-v "${ARCHIVE_DIR}:/archives:Z" \
-p "5901:5900" \
"${IMAGE_NAME}" \
-c "
apt-get update -qq && apt-get install -y -qq x11vnc xvfb >/dev/null 2>&1 &&
Xvfb :99 -screen 0 1366x768x24 >/dev/null 2>&1 &
x11vnc -display :99 -nopw -forever >/dev/null 2>&1 &
sleep 2 &&
node src/cli.mjs $(printf '%q ' "$@")
"
}
if ! podman image exists "${IMAGE_NAME}"; then
build_image
fi
case "${1:-}" in
headful-archive)
shift
# Prepend 'archive' so the user doesn't have to type it twice
set -- archive "$@"
run_headful "$@"
;;
archive|help)
run_headless "$@"
;;
*)
run_headless "$@"
;;
esac