#!/bin/bash

# Простой скрипт управления Linux Gaming News Bot

SERVICE_NAME="bot-news-linux-gaming"

# Цвета для вывода
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"
}

# Функция показа статуса
show_status() {
    print_info "Статус сервиса $SERVICE_NAME:"
    systemctl status $SERVICE_NAME --no-pager -l
}

# Функция показа логов
show_logs() {
    local lines=${1:-50}
    print_info "Последние $lines строк логов:"
    sudo journalctl -u $SERVICE_NAME -n $lines --no-pager
}

# Функция следения за логами
follow_logs() {
    print_info "Следование за логами (Ctrl+C для выхода):"
    sudo journalctl -u $SERVICE_NAME -f
}

# Функция показа помощи
show_help() {
    echo "Управление Linux Gaming News Bot"
    echo ""
    echo "Использование: $0 [команда]"
    echo ""
    echo "Команды:"
    echo "  start     - Запустить сервис"
    echo "  stop      - Остановить сервис"
    echo "  restart   - Перезапустить сервис"
    echo "  status    - Показать статус сервиса"
    echo "  enable    - Включить автозапуск"
    echo "  disable   - Отключить автозапуск"
    echo "  logs      - Показать последние логи"
    echo "  logs N    - Показать последние N строк логов"
    echo "  follow    - Следить за логами в реальном времени"
    echo "  install   - Установить сервис (требует sudo)"
    echo "  uninstall - Удалить сервис (требует sudo)"
    echo "  help      - Показать эту справку"
    echo ""
}

# Проверка существования сервиса
check_service_exists() {
    if ! systemctl list-unit-files | grep -q "^$SERVICE_NAME.service"; then
        print_error "Сервис $SERVICE_NAME не установлен"
        print_info "Запустите: sudo ./install-service.sh"
        exit 1
    fi
}

# Основная логика
case "${1}" in
    "start")
        check_service_exists
        print_info "Запуск сервиса..."
        sudo systemctl start $SERVICE_NAME
        show_status
        ;;
    "stop")
        check_service_exists
        print_info "Остановка сервиса..."
        sudo systemctl stop $SERVICE_NAME
        show_status
        ;;
    "restart")
        check_service_exists
        print_info "Перезапуск сервиса..."
        sudo systemctl restart $SERVICE_NAME
        show_status
        ;;
    "status")
        check_service_exists
        show_status
        ;;
    "enable")
        check_service_exists
        print_info "Включение автозапуска..."
        sudo systemctl enable $SERVICE_NAME
        print_success "Автозапуск включен"
        ;;
    "disable")
        check_service_exists
        print_info "Отключение автозапуска..."
        sudo systemctl disable $SERVICE_NAME
        print_success "Автозапуск отключен"
        ;;
    "logs")
        check_service_exists
        if [ -n "$2" ] && [[ "$2" =~ ^[0-9]+$ ]]; then
            show_logs $2
        else
            show_logs
        fi
        ;;
    "follow")
        check_service_exists
        follow_logs
        ;;
    "install")
        if [ ! -f "./install-service.sh" ]; then
            print_error "Файл install-service.sh не найден"
            exit 1
        fi
        sudo ./install-service.sh
        ;;
    "uninstall")
        if [ ! -f "./uninstall-service.sh" ]; then
            print_error "Файл uninstall-service.sh не найден"
            exit 1
        fi
        sudo ./uninstall-service.sh
        ;;
    "help"|"--help"|"-h")
        show_help
        ;;
    "")
        print_warning "Команда не указана"
        show_help
        exit 1
        ;;
    *)
        print_error "Неизвестная команда: $1"
        show_help
        exit 1
        ;;
esac