#!/bin/sh # ------------------------------------------------------------- # Erzeugt das Upload-Paket fuer klassisches Webhosting. # # Ergebnis: build/urlshort-qr-gen-release/ und build/urlshort-qr-gen.zip # Enthalten ist alles, was auf dem Server gebraucht wird - inklusive # vendor/ ohne Entwicklungspakete. Nicht enthalten sind Tests, Docker, # Git-Dateien und die eigene .env. # # Aufruf mit lokalem PHP und Composer (im Projektverzeichnis): # sh build-release.sh # # Ohne lokales PHP ueber das Anwendungs-Image - dieses bringt PHP samt # gd, intl und Composer mit (der schlanke composer:2 hat kein gd und # bricht deshalb an der Plattformpruefung ab): # docker compose build # docker run --rm -v "$PWD:/app" -w /app urlshort-qr-gen:latest sh build-release.sh # ------------------------------------------------------------- set -eu ROOT="$(pwd)" BUILD="$ROOT/build" TARGET="$BUILD/urlshort-qr-gen-release" echo "==> Aufraeumen" rm -rf "$BUILD" mkdir -p "$TARGET" echo "==> Dateien kopieren" for item in public src templates migrations composer.json composer.lock .env.example README.md .htaccess; do cp -R "$ROOT/$item" "$TARGET/" done mkdir -p "$TARGET/data/uploads" cp "$ROOT/data/.htaccess" "$TARGET/data/.htaccess" : > "$TARGET/data/.gitkeep" echo "==> Abhaengigkeiten ohne Entwicklungspakete installieren" cd "$TARGET" composer install --no-dev --optimize-autoloader --no-interaction --no-progress --quiet # composer.lock wird auf dem Server nicht gebraucht, composer.json auch # nicht - beide sind ueber die .htaccess ohnehin gesperrt. Sie bleiben # liegen, damit sich das Paket spaeter aktualisieren laesst. # endroid bringt eine 16 MB grosse Schriftart mit. Gebraucht wird sie # ausschliesslich fuer Beschriftungen UNTER dem QR-Code (Label) - diese # Anwendung erzeugt keine, der QrRenderer uebergibt dort immer null. # Ohne die Datei schrumpft der Upload von rund 18 MB auf gut 2 MB. # Sollte spaeter doch eine Beschriftung dazukommen, faellt das hier auf # und die Schriftart bleibt im Paket. echo "==> Ungenutzte Schriftart pruefen" if grep -rqE 'Endroid\\\\QrCode\\\\Label|new Label\(' "$TARGET/src" 2>/dev/null; then echo " Label wird verwendet - Schriftart bleibt erhalten." else rm -f "$TARGET/vendor/endroid/qr-code/assets/noto_sans.otf" echo " noto_sans.otf entfernt (wird nicht verwendet)." fi echo "==> Archiv erzeugen" cd "$BUILD" if command -v zip >/dev/null 2>&1; then zip -rq urlshort-qr-gen.zip urlshort-qr-gen-release echo " build/urlshort-qr-gen.zip" else tar -czf urlshort-qr-gen.tar.gz urlshort-qr-gen-release echo " build/urlshort-qr-gen.tar.gz (kein zip vorhanden)" echo " Unter Windows laesst sich stattdessen ein ZIP erzeugen mit:" echo " Compress-Archive build/urlshort-qr-gen-release build/urlshort-qr-gen.zip" fi echo "==> Fertig" echo " Verzeichnis: build/urlshort-qr-gen-release" echo " Dateien: $(find "$TARGET" -type f | wc -l)" echo " Groesse: $(du -sh "$TARGET" | cut -f1)"