#!/bin/sh

DEVD_CONF="/etc/devd/calista-devices.conf"
DEVICE_CHECK_SCRIPT="/calista/devices"
DEVD_PATH="/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin"

# Проверяем, существует ли скрипт проверки устройств
if [ ! -x "$DEVICE_CHECK_SCRIPT" ]; then
    echo "Ошибка: Скрипт $DEVICE_CHECK_SCRIPT не найден или не исполняемый"
    exit 1
fi

# Создаём конфигурационный файл
cat > "$DEVD_CONF" <<EOF
# Файл: /etc/devd/calista-devices.conf
# Отслеживание подключения и отключения устройств для Calista Driver Manager

# PCI-устройства: подключение
notify 100 {
    match "system"          "PCI";
    match "subsystem"       "!unknown";
    action "$DEVICE_CHECK_SCRIPT";
};

# USB-устройства: подключение
notify 100 {
    match "system"          "USB";
    match "subsystem"       "DEVICE";
    match "type"            "ATTACH";
    action "/bin/sh -c 'PATH=$DEVD_PATH $DEVICE_CHECK_SCRIPT >> /tmp/calista-devd.log 2>&1'";
};

# USB-устройства: отключение
notify 100 {
    match "system"          "USB";
    match "subsystem"       "DEVICE";
    match "type"            "DETACH";
    action "/bin/sh -c 'PATH=$DEVD_PATH $DEVICE_CHECK_SCRIPT >> /tmp/calista-devd.log 2>&1'";
};
EOF

# Проверяем, что файл создался
if [ -f "$DEVD_CONF" ]; then
    echo "Конфигурационный файл создан: $DEVD_CONF"
else
    echo "Ошибка: Не удалось создать $DEVD_CONF"
    exit 1
fi

# Перезагружаем devd
echo "Перезагрузка devd..."
service devd restart

# Проверяем статус
if service devd status > /dev/null 2>&1; then
    echo "devd успешно перезагружен"
else
    echo "Ошибка: Не удалось перезагрузить devd"
    exit 1
fi

echo "Настройка devd для Calista завершена успешно."
