#!/bin/bash

# Скрипт для сброса подвисших задач печати HP принтера на macOS

set -e

echo "🔍 Поиск HP принтеров..."

# Найти все HP принтеры
HP_PRINTERS=$(lpstat -p 2>/dev/null | grep -i "hp" | awk '{print $2}' || true)

if [ -z "$HP_PRINTERS" ]; then
    echo "❌ HP принтеры не найдены в системе"
    echo ""
    echo "Доступные принтеры:"
    lpstat -p 2>/dev/null | awk '{print "  - " $2}' || echo "  (нет принтеров)"
    exit 1
fi

echo "✅ Найдены HP принтеры:"
echo "$HP_PRINTERS" | while read printer; do
    echo "  - $printer"
done

echo ""
echo "📋 Проверка задач печати..."

# Для каждого HP принтера
echo "$HP_PRINTERS" | while read printer; do
    echo ""
    echo "🖨️  Обработка принтера: $printer"
    
    # Проверить задачи
    JOBS=$(lpstat -o "$printer" 2>/dev/null | awk '{print $1}' | cut -d- -f1 | sort -u || true)
    
    if [ -z "$JOBS" ]; then
        echo "  ✅ Нет задач в очереди"
    else
        JOB_COUNT=$(echo "$JOBS" | wc -l | tr -d ' ')
        echo "  ⚠️  Найдено задач: $JOB_COUNT"
        
        # Отменить все задачи для этого принтера
        echo "  🗑️  Отмена всех задач..."
        cancel -a "$printer" 2>/dev/null || true
        
        # Отменить задачи по ID
        echo "$JOBS" | while read job_id; do
            if [ ! -z "$job_id" ]; then
                cancel "$job_id" 2>/dev/null || true
            fi
        done
        
        echo "  ✅ Задачи отменены"
    fi
    
    # Сбросить состояние принтера
    echo "  🔄 Сброс состояния принтера..."
    cupsenable "$printer" 2>/dev/null || true
    cupsaccept "$printer" 2>/dev/null || true
    lpadmin -p "$printer" -o printer-is-accepting-jobs=true 2>/dev/null || true
    
    echo "  ✅ Принтер готов к работе"
done

echo ""
echo "✅ Готово! Все подвисшие задачи HP принтеров сброшены"
echo ""
echo "📊 Текущий статус:"
lpstat -p 2>/dev/null | grep -i "hp" || echo "  (нет HP принтеров)"

