103 lines
3.2 KiB
Bash
Executable File
103 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
TARGET_DIR="${1:?target dir required}"
|
|
|
|
FRONTEND_DIR="$TARGET_DIR/frontend"
|
|
CURRENT_LINK="/opt/yourpart"
|
|
CURRENT_FRONTEND="$CURRENT_LINK/frontend"
|
|
CURRENT_ROOT_ENV="$CURRENT_LINK/.env"
|
|
MODELS_MANIFEST="$TARGET_DIR/falukant-models.env"
|
|
|
|
echo "=== YourPart Frontend Update ==="
|
|
echo "Ziel: $FRONTEND_DIR"
|
|
echo "NOTE: .env files will NOT be overwritten"
|
|
|
|
cd "$FRONTEND_DIR"
|
|
|
|
if [ -d "dist" ]; then
|
|
echo "Korrigiere Berechtigungen für dist-Verzeichnis..."
|
|
sudo -n chown -R "$USER:$USER" dist/ 2>/dev/null || true
|
|
fi
|
|
|
|
echo "Lösche alle generierten Verzeichnisse..."
|
|
rm -rf dist/
|
|
rm -rf node_modules/.vite/
|
|
rm -rf node_modules/.cache/
|
|
|
|
TEMP_ENV="/tmp/yourpart-frontend-env-$$"
|
|
|
|
if [ -f "$CURRENT_ROOT_ENV" ]; then
|
|
echo "Nutze bestehende .env-Datei vom Live-System (Root) für Build..."
|
|
cp "$CURRENT_ROOT_ENV" "$TEMP_ENV"
|
|
cp "$TEMP_ENV" .env
|
|
elif [ -f "$CURRENT_FRONTEND/.env" ]; then
|
|
echo "Nutze bestehende .env-Datei vom Live-System (Frontend) für Build..."
|
|
cp "$CURRENT_FRONTEND/.env" "$TEMP_ENV"
|
|
cp "$TEMP_ENV" .env
|
|
elif [ -f .env.production ]; then
|
|
echo "Nutze .env.production für Build..."
|
|
cp .env.production .env
|
|
elif [ -f .env.server ]; then
|
|
echo "Nutze .env.server für Build..."
|
|
cp .env.server .env
|
|
fi
|
|
|
|
echo "Baue Frontend neu..."
|
|
export VITE_API_BASE_URL="${VITE_API_BASE_URL:-https://www.your-part.de}"
|
|
export VITE_DAEMON_SOCKET="${VITE_DAEMON_SOCKET:-wss://www.your-part.de:4551}"
|
|
export VITE_CHAT_WS_URL="${VITE_CHAT_WS_URL:-wss://www.your-part.de:1235}"
|
|
|
|
echo "VITE_API_BASE_URL=$VITE_API_BASE_URL"
|
|
echo "VITE_DAEMON_SOCKET=$VITE_DAEMON_SOCKET"
|
|
echo "VITE_CHAT_WS_URL=$VITE_CHAT_WS_URL"
|
|
|
|
echo "Installiere Dependencies..."
|
|
npm install
|
|
|
|
if [ ! -f "$MODELS_MANIFEST" ]; then
|
|
echo "ERROR: Falukant model manifest missing: $MODELS_MANIFEST" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Source GLBs are versioned as a Gitea release attachment rather than Git
|
|
# objects, keeping routine clones and deployments small.
|
|
# shellcheck disable=SC1090
|
|
source "$MODELS_MANIFEST"
|
|
: "${FALUKANT_MODELS_URL:?Falukant model URL is missing}"
|
|
: "${FALUKANT_MODELS_SHA256:?Falukant model checksum is missing}"
|
|
|
|
MODELS_ARCHIVE="$(mktemp /tmp/falukant-models-XXXXXX.tar.gz)"
|
|
trap 'rm -f "$TEMP_ENV" "$MODELS_ARCHIVE"' EXIT
|
|
|
|
echo "Lade Falukant-3D-Modelle (${FALUKANT_MODELS_URL})..."
|
|
curl --fail --location --retry 3 --retry-delay 2 \
|
|
--output "$MODELS_ARCHIVE" "$FALUKANT_MODELS_URL"
|
|
echo "${FALUKANT_MODELS_SHA256} ${MODELS_ARCHIVE}" | sha256sum --check --status
|
|
|
|
echo "Entpacke Falukant-3D-Modelle..."
|
|
rm -rf "$FRONTEND_DIR/models-src/3d/falukant"
|
|
tar -xzf "$MODELS_ARCHIVE" -C "$TARGET_DIR"
|
|
|
|
echo "Optimiere Falukant-3D-Modelle..."
|
|
npm run optimize-models
|
|
|
|
echo "Baue Frontend..."
|
|
npm run build
|
|
|
|
if [ -f "$FRONTEND_DIR/.env" ]; then
|
|
echo "✓ Bestehende .env-Datei wurde beibehalten"
|
|
else
|
|
echo "⚠ Keine .env-Datei im Zielverzeichnis gefunden"
|
|
fi
|
|
|
|
echo "Setze Berechtigungen..."
|
|
sudo -n chown -R www-data:www-data "$FRONTEND_DIR/dist"
|
|
if [ -f "$FRONTEND_DIR/.env" ]; then
|
|
sudo -n chown www-data:www-data "$FRONTEND_DIR/.env"
|
|
sudo -n chmod 644 "$FRONTEND_DIR/.env"
|
|
fi
|
|
sudo -n chmod -R 755 "$FRONTEND_DIR/dist"
|
|
|
|
echo "=== Frontend Update abgeschlossen! ==="
|