#!/bin/sh # Baut die Erweiterung zu einer .xpi-Datei. # # Eine .xpi ist ein ZIP. Wichtig: aus dem Wurzelverzeichnis heraus packen, # nicht das Verzeichnis selbst einpacken - sonst findet Thunderbird die # manifest.json nicht. set -eu cd "$(dirname "$0")" NAME="paperless-connector" VERSION="$(sed -n 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' manifest.json | head -1)" OUT="${NAME}-${VERSION}.xpi" # Paketinhalt als feste Liste. Nur was hier steht, landet in der .xpi - # so geraten keine Altlasten (alte Dialoge, ungenutzte Symbole, Quell-SVGs # aus make_icons.py) ins Paket. addons.thunderbird.net lehnt Pakete mit # ungenutzten Dateien ab. DATEIEN=" manifest.json background.js LICENSE lib/client.js lib/settings.js lib/pdf.js lib/mailpdf.js ui/gemeinsam.css ui/gemeinsam.js ui/store.html ui/store.js ui/schritt.html ui/schritt.js ui/insert.html ui/insert.js ui/options.html ui/options.js _locales/de/messages.json _locales/en/messages.json _locales/fr/messages.json icons/paperless-logo_16.png icons/paperless-logo_32.png icons/paperless-logo_64.png icons/paperless-store_16.png icons/paperless-store_32.png icons/paperless-insert_16.png icons/paperless-insert_32.png " # Vollständigkeit prüfen. zip überspringt fehlende Pfade nicht immer # lautstark - ohne diese Prüfung entstünde ein Paket, das sich nicht # laden lässt. FEHLT="" for f in $DATEIEN; do [ -e "$f" ] || FEHLT="$FEHLT $f\n" done if [ -n "$FEHLT" ]; then printf "ABBRUCH - diese Dateien fehlen:\n%b" "$FEHLT" >&2 printf "\nWahrscheinlich wurden beim Kopieren die Unterverzeichnisse\n" >&2 printf "ausgelassen. Benoetigt werden lib/, ui/, icons/ und _locales/.\n" >&2 exit 1 fi # Umgekehrte Prüfung: Dateien im Quellbaum, die nicht im Paket landen. # Nur ein Hinweis - README, build.sh usw. gehören bewusst nicht hinein. for f in $(find lib ui icons _locales -type f | sort); do case " $(echo $DATEIEN) " in *" $f "*) ;; *) echo "Hinweis: nicht im Paket: $f" >&2 ;; esac done rm -f "$OUT" # shellcheck disable=SC2086 zip -q -X "$OUT" $DATEIEN if ! unzip -l "$OUT" | grep -q 'manifest.json'; then echo "ABBRUCH: manifest.json fehlt im erzeugten Paket." >&2 exit 1 fi echo "Erstellt: $OUT ($(wc -c < "$OUT") Bytes)" echo echo "Laden zum Ausprobieren:" echo " Extras -> Entwicklerwerkzeuge -> Debuggen von Add-ons" echo " -> Temporaeres Add-on laden -> manifest.json waehlen" echo echo "Dauerhaft installieren:" echo " Add-ons-Verwaltung -> Zahnrad -> Add-on aus Datei installieren" echo " -> $OUT"