#!/bin/sh # preview.sh — wrapper hôte GrosseBertha · Chantier C2 # Usage : ./preview.sh [dpi] # Convertit le deck en PNG par slide via le conteneur sliding-preview. # Sortie : /_previews/ (slide-NN.png + index.html) # # Prérequis : image construite (cd docker/preview && docker build -t # sliding-preview .) et droits docker pour l'utilisateur (voir notes C2). # # Env optionnels : # FONTS_DIR — dossier des TTF PR (défaut ./assets/fonts s'il existe) # DOCKER_BIN — binaire docker (défaut docker) # PREVIEW_MEM — limite RAM du conteneur (défaut 1200m — DS218 2 Go) PPTX="$1" DPI="${2:-110}" DOCKER_BIN="${DOCKER_BIN:-docker}" PREVIEW_MEM="${PREVIEW_MEM:-1200m}" # Docker exige root sur ce NAS : s'auto-élever si besoin (C2) if [ "$(id -u)" -ne 0 ]; then exec sudo "$0" "$@" fi if [ -z "$PPTX" ]; then echo "usage: preview.sh [dpi]" >&2 exit 1 fi if [ ! -f "$PPTX" ]; then echo "preview: fichier introuvable: $PPTX" >&2 exit 1 fi # Chemins absolus (le dossier du pptx est monté sur /work) WORK=$(cd "$(dirname "$PPTX")" && pwd) NAME=$(basename "$PPTX") # Polices PR : défaut ./assets/fonts relatif au dossier de ce script SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) if [ -z "$FONTS_DIR" ] && [ -d "$SCRIPT_DIR/assets/fonts" ]; then FONTS_DIR="$SCRIPT_DIR/assets/fonts" fi FONT_MOUNT="" if [ -n "$FONTS_DIR" ] && [ -d "$FONTS_DIR" ]; then FONT_MOUNT="-v $FONTS_DIR:/fonts:ro" fi exec "$DOCKER_BIN" run --rm \ --memory "$PREVIEW_MEM" --memory-swap "$PREVIEW_MEM" \ -v "$WORK:/work" \ $FONT_MOUNT \ sliding-preview "/work/$NAME" "$DPI"