#!/bin/sh # Baut die Erweiterung zu einer .oxt-Datei. # # Eine .oxt ist ein ZIP mit fester Struktur. Wichtig: aus dem # Wurzelverzeichnis heraus packen, nicht das Verzeichnis selbst # einpacken - sonst findet LibreOffice die META-INF/manifest.xml nicht. set -eu cd "$(dirname "$0")" NAME="paperless-libreoffice" VERSION="$(sed -n 's/.*&2 printf "\nWahrscheinlich wurden beim Kopieren die Unterverzeichnisse\n" >&2 printf "ausgelassen. Benoetigt werden META-INF/, pythonpath/ und icons/.\n" >&2 exit 1 fi rm -f "$OUT" find . -name '__pycache__' -type d -exec rm -rf {} + 2>/dev/null || true # Lizenztext an die Stelle kopieren, an der LibreOffice ihn erwartet. # Im Wurzelverzeichnis ohne Endung wird er beim Installieren nicht # gefunden ("NOT_EXISTING"), obwohl er im Paket liegt. mkdir -p registration cp -f LICENSE registration/license-en.txt zip -r -q "$OUT" \ META-INF \ description.xml description-de.txt description-en.txt \ description-fr.txt LICENSE SICHERHEIT.md registration \ Addons.xcu ProtocolHandler.xcu \ paperless_addon.py \ pythonpath \ icons \ -x "*.pyc" "*/__pycache__/*" "*.oxt" "build.sh" "README.md" "make_icons.py" # Ergebnis gegenprüfen: Anzahl der Einträge und Vorhandensein des # Manifests. Ohne META-INF/manifest.xml ist es aus Sicht von LibreOffice # kein Erweiterungspaket. ANZ=$(unzip -l "$OUT" | grep -c ' ' || true) if ! unzip -l "$OUT" | grep -q 'META-INF/manifest.xml'; then echo "ABBRUCH: META-INF/manifest.xml fehlt im erzeugten Paket." >&2 exit 1 fi echo "Erstellt: $OUT ($(wc -c < "$OUT") Bytes)" unzip -l "$OUT" | tail -2 | head -1 echo echo "Installieren:" echo " unopkg add --force $OUT" echo "Entfernen:" echo " unopkg remove org.example.paperless.libreoffice" echo echo "LibreOffice danach vollstaendig beenden, auch den Schnellstarter:" echo " soffice --terminate_after_init # oder: pkill soffice"