116 lines
3.6 KiB
Bash
Executable File
116 lines
3.6 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 in their own Git-LFS repository. Keep them outside
|
|
# the application worktree, because update.sh removes untracked files there.
|
|
# shellcheck disable=SC1090
|
|
source "$MODELS_MANIFEST"
|
|
: "${FALUKANT_MODELS_REPOSITORY:?Falukant models repository is missing}"
|
|
: "${FALUKANT_MODELS_REF:?Falukant models ref is missing}"
|
|
|
|
ASSETS_DIR="$TARGET_DIR/.yourpart-assets"
|
|
trap 'rm -f "$TEMP_ENV"' EXIT
|
|
|
|
if ! git lfs version >/dev/null 2>&1; then
|
|
echo "ERROR: git-lfs is required to retrieve Falukant models" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Lade Falukant-3D-Modelle aus ${FALUKANT_MODELS_REPOSITORY}@${FALUKANT_MODELS_REF}..."
|
|
rm -rf "$ASSETS_DIR"
|
|
GIT_LFS_SKIP_SMUDGE=1 git clone --depth 1 --branch "$FALUKANT_MODELS_REF" \
|
|
"$FALUKANT_MODELS_REPOSITORY" "$ASSETS_DIR"
|
|
git -C "$ASSETS_DIR" lfs pull
|
|
|
|
ASSET_MODELS_DIR="$ASSETS_DIR/models-src/3d/falukant"
|
|
if [ ! -d "$ASSET_MODELS_DIR/characters" ]; then
|
|
echo "ERROR: Falukant models are missing from ${FALUKANT_MODELS_REPOSITORY}@${FALUKANT_MODELS_REF}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Übernehme Falukant-3D-Quellmodelle..."
|
|
rm -rf "$FRONTEND_DIR/models-src/3d/falukant"
|
|
mkdir -p "$FRONTEND_DIR/models-src/3d"
|
|
cp -a "$ASSET_MODELS_DIR" "$FRONTEND_DIR/models-src/3d/"
|
|
|
|
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! ==="
|