#!/bin/bash

# Установочный скрипт для Linux Gaming News Bot
# Создает systemd service и настраивает его для автозапуска

set -e  # Выход при любой ошибке

# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# Функции для цветного вывода
print_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

print_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

print_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# Проверка запуска от root
if [ "$EUID" -ne 0 ]; then
    print_error "Скрипт должен быть запущен с правами root (sudo)"
    print_info "Используйте: sudo ./install-service.sh"
    exit 1
fi

# Определение текущего пользователя (не root)
REAL_USER=$(who am i | awk '{print $1}')
if [ -z "$REAL_USER" ]; then
    REAL_USER=$(logname 2>/dev/null || echo $SUDO_USER)
fi

if [ -z "$REAL_USER" ]; then
    print_error "Не удалось определить имя пользователя"
    exit 1
fi

print_info "Установка сервиса для пользователя: $REAL_USER"

# Определение директории проекта
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$SCRIPT_DIR"

print_info "Директория проекта: $PROJECT_DIR"

# Проверка существования файлов
if [ ! -f "$PROJECT_DIR/news-bot-modular.py" ]; then
    print_error "Не найден файл news-bot-modular.py в $PROJECT_DIR"
    exit 1
fi

if [ ! -f "$PROJECT_DIR/bot-news-linux-gaming.service" ]; then
    print_error "Не найден файл bot-news-linux-gaming.service в $PROJECT_DIR"
    exit 1
fi

# Проверка наличия keys.py
if [ ! -f "$PROJECT_DIR/keys.py" ]; then
    print_warning "Не найден файл keys.py с настройками"
    print_info "Создайте keys.py на основе keys_example.py перед запуском сервиса:"
    print_info "  cp keys_example.py keys.py"
    print_info "  nano keys.py  # заполните реальными ключами"
fi

# Создание временного файла сервиса с правильными путями
TEMP_SERVICE=$(mktemp)
sed "s|/home/xpamych/Yandex.Disk/IdeaProjects/bot-news-linux-gaming|$PROJECT_DIR|g" "$PROJECT_DIR/bot-news-linux-gaming.service" > "$TEMP_SERVICE"
sed -i "s|User=xpamych|User=$REAL_USER|g" "$TEMP_SERVICE"
sed -i "s|Group=xpamych|Group=$REAL_USER|g" "$TEMP_SERVICE"

print_info "Копирование systemd unit файла..."
cp "$TEMP_SERVICE" /etc/systemd/system/bot-news-linux-gaming.service
rm "$TEMP_SERVICE"

print_info "Установка прав доступа..."
chmod 644 /etc/systemd/system/bot-news-linux-gaming.service
chown root:root /etc/systemd/system/bot-news-linux-gaming.service

print_info "Перезагрузка systemd..."
systemctl daemon-reload

print_success "Сервис успешно установлен!"
print_info ""
print_info "Для управления сервисом используйте команды:"
print_info "  sudo systemctl enable bot-news-linux-gaming   # Включить автозапуск"
print_info "  sudo systemctl start bot-news-linux-gaming    # Запустить сервис"
print_info "  sudo systemctl status bot-news-linux-gaming   # Посмотреть статус"
print_info "  sudo systemctl stop bot-news-linux-gaming     # Остановить сервис"
print_info "  sudo systemctl disable bot-news-linux-gaming  # Отключить автозапуск"
print_info ""
print_info "Логи сервиса:"
print_info "  sudo journalctl -u bot-news-linux-gaming -f   # Следить за логами"
print_info "  sudo journalctl -u bot-news-linux-gaming -n 50 # Последние 50 строк"
print_info ""

# Предложение сразу включить и запустить
read -p "Включить автозапуск и запустить сервис сейчас? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    print_info "Включение автозапуска..."
    systemctl enable bot-news-linux-gaming
    
    print_info "Запуск сервиса..."
    systemctl start bot-news-linux-gaming
    
    sleep 2
    
    print_info "Статус сервиса:"
    systemctl status bot-news-linux-gaming --no-pager
    
    print_success "Сервис запущен и добавлен в автозагрузку!"
else
    print_info "Сервис установлен, но не запущен. Запустите его командой:"
    print_info "  sudo systemctl enable --now bot-news-linux-gaming"
fi