37 lines
1.1 KiB
Bash
Executable File
37 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then
|
|
echo "Installing Playwright system dependencies with apt (sudo)..."
|
|
npx playwright install-deps chromium
|
|
exit 0
|
|
fi
|
|
|
|
DEPS_DIR="${PLAYWRIGHT_DEPS_DIR:-$HOME/.local/playwright-deps}"
|
|
ROOT="$DEPS_DIR/root"
|
|
MARKER="$DEPS_DIR/.installed"
|
|
|
|
if [[ -f "$MARKER" && -f "$ROOT/usr/lib/x86_64-linux-gnu/libatk-1.0.so.0" ]]; then
|
|
echo "Playwright local dependencies already installed at $ROOT"
|
|
exit 0
|
|
fi
|
|
|
|
echo "No passwordless sudo — installing Playwright libs locally to $DEPS_DIR"
|
|
|
|
TMP_LIST="$(mktemp)"
|
|
npx playwright install-deps chromium --dry-run 2>&1 | sed -n '/^ /s/^ //p' > "$TMP_LIST"
|
|
|
|
mkdir -p "$DEPS_DIR/debs"
|
|
cd "$DEPS_DIR/debs"
|
|
ALL_PKGS="$(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances $(cat "$TMP_LIST") 2>/dev/null | grep -E '^[[:alnum:]]' | grep -v '^<' | sort -u)"
|
|
apt-get download $ALL_PKGS
|
|
|
|
rm -rf "$ROOT"
|
|
mkdir -p "$ROOT"
|
|
for deb in *.deb; do
|
|
dpkg-deb -x "$deb" "$ROOT"
|
|
done
|
|
|
|
date -Iseconds > "$MARKER"
|
|
rm -f "$TMP_LIST"
|
|
echo "Done. Libraries installed to $ROOT" |