- Design: „modern“ (hell, flach, wie Windows 11, normaler Windows-Rahmen) ist Standard; „win95“ bleibt unter Datei > Einstellungen wählbar (Einstellung „design“). - Export: Zeitraum von–bis (nach Aktivierungsdatum oder Abrechnungszeitraum des Anbieters), exportierte Positionen werden als abgerechnet gekennzeichnet (Betrag/Händler eingefroren) und per Fingerabdruck auch in späteren Dateien/Abrechnungen nicht noch einmal abgerechnet. - Datei > Abrechnung erledigt / wieder öffnen: erledigte Abrechnungen sind gegen Änderungen gesperrt. - DB-Schema v4 (Migration inkl. Fingerabdrücke für alte Positionen). - Linux-Build (python:3.12-bookworm) als zweiter Pipeline-Job mit Tests und Selbsttest; Release-Upload für beide Jobs über build/release_hochladen.sh. - Behoben: normaler Windows-Rahmen stürzte beim Start ab (Hauptrahmen.nativ fehlte). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
58 lines
2.0 KiB
Bash
Executable File
58 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Baut die Linux-Version (einzelne Programmdatei) – im Container python:3.12-bookworm (glibc 2.36:
|
||
# läuft ab Debian 12, Ubuntu 24.04, Linux Mint 22; Debian 11 ist ausgelaufen).
|
||
# Ergebnis: dist/Provisionsmanager95-linux-x86_64-<version>.tar.gz
|
||
set -euo pipefail
|
||
cd "$(dirname "$0")/.."
|
||
export LANG=C.UTF-8 LC_ALL=C.UTF-8
|
||
|
||
if ! command -v Xvfb >/dev/null; then
|
||
apt-get update -qq && apt-get install -y -qq --no-install-recommends xvfb xauth fonts-dejavu-core >/dev/null
|
||
fi
|
||
Xvfb :91 -screen 0 1280x800x24 -nolisten tcp >/dev/null 2>&1 &
|
||
XVFB_PID=$!
|
||
trap 'kill $XVFB_PID 2>/dev/null || true' EXIT
|
||
export DISPLAY=:91
|
||
sleep 1
|
||
|
||
python3 --version
|
||
python3 -m pip install --disable-pip-version-check -q -r requirements-dev.txt
|
||
|
||
echo "== Tests inkl. Oberfläche (Linux) =="
|
||
PROVTOOL_GUI_TESTS=1 timeout 900 python3 -m pytest -v -p no:cacheprovider
|
||
|
||
VERSION=$(python3 -c "import provtool; print(provtool.__version__)")
|
||
echo "== PyInstaller (Version $VERSION) =="
|
||
python3 -m PyInstaller --noconfirm --clean --distpath dist --workpath build/tmp build/provisionsmanager.spec
|
||
test -x dist/Provisionsmanager95
|
||
|
||
echo "== Selbsttest des fertigen Programms =="
|
||
rm -f selbsttest.txt
|
||
set +e
|
||
timeout 300 dist/Provisionsmanager95 --selbsttest selbsttest.txt
|
||
CODE=$?
|
||
set -e
|
||
cat selbsttest.txt 2>/dev/null || echo "(keine Ergebnisdatei)"
|
||
if [ "$CODE" -ne 0 ] || ! head -1 selbsttest.txt 2>/dev/null | grep -qx OK; then
|
||
echo "Selbsttest FEHLGESCHLAGEN (Exit-Code $CODE)"; exit 1
|
||
fi
|
||
echo "Selbsttest bestanden"
|
||
|
||
PAKET="Provisionsmanager95-linux-x86_64-$VERSION"
|
||
rm -rf "dist/$PAKET" && mkdir -p "dist/$PAKET"
|
||
cp dist/Provisionsmanager95 assets/app.png "dist/$PAKET/"
|
||
cp README.md "dist/$PAKET/LIESMICH.md"
|
||
cat > "dist/$PAKET/provisionsmanager95.desktop" <<DESKTOP
|
||
[Desktop Entry]
|
||
Type=Application
|
||
Name=Provisions-Manager 95
|
||
Comment=Provisionsabrechnung für Unterhändler
|
||
Exec=sh -c '"\$(dirname "%k")/Provisionsmanager95"'
|
||
Icon=app
|
||
Terminal=false
|
||
Categories=Office;Finance;
|
||
DESKTOP
|
||
tar -C dist -czf "dist/$PAKET.tar.gz" "$PAKET"
|
||
echo "$VERSION" > dist/VERSION
|
||
ls -la dist
|