#!/bin/bash 
 
# Проверка наличия утилит
function check_dependencies {
    if ! command -v curl &> /dev/null; then
        sudo apt-get update
        sudo apt-get install curl
        # exit 1
    fi
    if ! command -v apt-get &> /dev/null; then
        echo "Ошибка: apt-get не найден. Убедитесь, что используете систему на основе Debian/Ubuntu."
        exit 1
    fi
}  
 
# Функция для удаления Docker
function uninstall_docker {
 
   echo "Удаление Docker..."
   sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y
   sudo rm -rf /var/lib/docker
   sudo rm -rf /var/lib/containerd
   sudo rm /etc/apt/sources.list.d/docker.list
   sudo rm /etc/apt/keyrings/docker.asc
 
   # Проверяем, удалены ли все файлы Docker
    if ! dpkg-query -W -f='${Status}' docker-ce 2>/dev/null | grep -q "install ok installed"; then
        echo "Docker успешно удален."
    else
        echo "Ошибка при удалении Docker."
        exit 1
    fi
}
 
  
 
# Функция для установки Docker
function install_docker {
    echo "Установка Docker..."
    sudo apt-get update
    sudo apt-get install ca-certificates curl -y
 
    # Создание директории для ключей
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
 
    # Добавляем репозиторий Docker в источники apt
    echo \
        "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
        $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null  
 
    # Обновляем пакеты и устанавливаем Docker
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y 
 
    # Проверяем успешность установки
    if [[ $? -eq 0 ]]; then
        sudo groupadd docker
        sudo usermod -aG docker $USER
        newgrp docker # Обновление группы
        echo "Docker успешно установлен."
    else
        echo "Ошибка при установке Docker."
    fi
}  
 
# Проверка, установлен ли Docker
I=$(dpkg-query -W -f='${Status}' docker-ce 2>/dev/null)  
check_dependencies  # Проверка наличия необходимых утилит  
 
if  [[ "$I" == *"install ok installed"* ]]; then
    yn=''
    while true; do
        read -p "Найден установленный Doker. Удалить? (Y/N): " yn
            case $yn in
                [Yy]* )  
                    uninstall_docker
                    break
                    ;;
                [Nn]* )
                    echo "Docker не удален."
                    exit 0
                    ;;
                * )
                    echo -ne "Только Y ли N, пожалуйста: "
                ;;
            esac
    done
else
   yn=''
    while true; do
        read -p "Docker не установлен. Установить? (Y/N): " yn
        case $yn in
            [Yy]*)
                install_docker
                break
                ;;
            [Nn]*)
                echo "Docker не установлен."
                exit 0
                ;;
            *)
                echo "Пожалуйста, введите только Y или N."
                ;;
        esac
    done
fi