#!/bin/bash
# Установка F7_Office (coolwsd, брендинг). Запускается на сервере Office.
# Apache и сертификаты настраивает управляющий скрипт.
# Использование: ./f7office.sh /path/to/f7cloud-install.env

set -e
ROLE="f7office"
ENV_FILE="${1:-/tmp/f7cloud-install.env}"
ERROR_LOG="/tmp/install-error-${ROLE}.log"

log_error() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] ERROR: $*" >> "$ERROR_LOG"; echo "ERROR: $*" >&2; }
log_warn()  { echo "[$(date '+%Y-%m-%d %H:%M:%S')] WARN: $*"  >> "$ERROR_LOG"; echo "WARN: $*"  >&2; }

if [ ! -f "$ENV_FILE" ]; then
    log_error "Файл конфигурации не найден: $ENV_FILE"
    exit 1
fi
# shellcheck source=/dev/null
set -a && source "$ENV_FILE" && set +a

> "$ERROR_LOG"
echo "=== Лог установки F7_Office ===" >> "$ERROR_LOG"
echo "Начало: $(date '+%Y-%m-%d %H:%M:%S')" >> "$ERROR_LOG"

if ! command -v git >/dev/null 2>&1; then
    echo "Установка git..."
    apt-get update -qq && apt-get install -y git || { log_error "Не удалось установить git"; exit 1; }
fi

echo "Очистка старой директории..."
rm -rf /tmp/F7_Office

echo "Клонирование репозитория F7_Office..."
if ! (cd /tmp && git clone https://git.f7cloud.ru/root/F7_Office.git); then
    log_error "Не удалось клонировать репозиторий F7_Office"
    exit 1
fi

sleep 1
if ! [ -d /tmp/F7_Office ] || ! [ -f /tmp/F7_Office/install-f7office.sh ]; then
    log_error "Директория /tmp/F7_Office не содержит install-f7office.sh"
    exit 1
fi

echo "Установка coolwsd и code-brand..."
apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y coolwsd code-brand || { log_error "Не удалось установить coolwsd/code-brand"; exit 1; }

echo "Копирование файлов брендинга..."
DIST_SRC=/tmp/F7_Office/usr/share/coolwsd/browser/dist
DIST_DST=/usr/share/coolwsd/browser/dist
if [ ! -d "$DIST_DST" ]; then
    log_error "Каталог $DIST_DST не найден после установки coolwsd"
    exit 1
fi
if [ ! -d "$DIST_SRC" ]; then
    log_error "В репозитории не найден каталог $DIST_SRC"
    exit 1
fi
cp -a "$DIST_SRC"/* "$DIST_DST/" 2>/dev/null || true
for f in branding.js branding.css branding-mobile.css branding-tablet.css cool.html wasm.html bundle.js global.js admin-bundle.js; do
    [ -f "$DIST_SRC/$f" ] && cp -a "$DIST_SRC/$f" "$DIST_DST/" && echo "  Скопирован: $f"
done
[ -d "$DIST_SRC/welcome" ] && cp -a "$DIST_SRC/welcome" "$DIST_DST/"
[ -d "$DIST_SRC/src" ] && mkdir -p "$DIST_DST/src" && cp -a "$DIST_SRC/src/layer" "$DIST_DST/src/" 2>/dev/null || true
[ -d "$DIST_SRC/f7cloud" ] && cp -a "$DIST_SRC/f7cloud" "$DIST_DST/"
[ -d "$DIST_SRC/l10n" ] && mkdir -p "$DIST_DST/l10n" && cp -a "$DIST_SRC/l10n"/* "$DIST_DST/l10n/" 2>/dev/null || true
[ -d "$DIST_SRC/admin" ] && mkdir -p "$DIST_DST/admin" && cp -a "$DIST_SRC/admin"/* "$DIST_DST/admin/" 2>/dev/null || true
systemctl restart coolwsd 2>/dev/null || true

echo "Конец: $(date '+%Y-%m-%d %H:%M:%S')" >> "$ERROR_LOG"
echo "F7_Office установлен. Лог ошибок: $ERROR_LOG"
exit 0
