#!/bin/bash
# Le slide del carosello di un'app, in PNG, con Chrome senza finestra.
# Uso: genera.sh <cartella store dell'app>   (vedi LEGGIMI.md)
# Esce in <cartella>/carosello/{android,ios,tablet}/<n>.png.
set -e
DIR="$(cd "$1" && pwd)"
QUI="$(cd "$(dirname "$0")" && pwd)"
CHROME="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
# Chrome vuole gli spazi del percorso codificati (la cartella " - App" ne ha).
url() { printf 'file://%s' "$1" | sed 's/ /%20/g'; }
# Le misure degli store: Google Play 1080x1920, App Store (6,9") 1320x2868,
# tablet di Google Play (7" e 10") 1440x2560.
for p in android:1080,1920 ios:1320,2868 tablet:1440,2560; do
  nome=${p%%:*}
  [ -d "$DIR/schermate/$nome" ] || continue
  # Quali slide fare su questa piattaforma lo dice testi.js (piattaforme).
  slide=$(node -e "eval(require('fs').readFileSync(process.argv[1],'utf8')+';globalThis.C=CAROSELLO'); console.log((C.piattaforme['$nome']||[]).join(' '))" "$DIR/carosello/testi.js")
  mkdir -p "$DIR/carosello/$nome"
  for s in $slide; do
    "$CHROME" --headless --disable-gpu --hide-scrollbars --allow-file-access-from-files \
      --virtual-time-budget=8000 --window-size=${p#*:} \
      --screenshot="$DIR/carosello/$nome/$s.png" \
      "$(url "$QUI/slide.html")?dir=$(printf %s "$DIR" | sed 's/ /%20/g')&s=$s&p=$nome" 2>/dev/null
    echo "$nome/$s.png"
  done
done
