89 lines
2.5 KiB
Bash
89 lines
2.5 KiB
Bash
#!/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"
|