#!/bin/sh
if [ -t 0 ]; then dnf in -y cockpit && systemctl enable --now cockpit.socket && dnf rm -y cockpit-repo-install || echo "Запустите скрипт с sudo"; exit; fi
# Выясняем, установлен ли cockpit.
rpm -q cockpit &>/dev/null && dnf rm -y cockpit-repo-install && exit
(
echo "10"
echo "# Обновление информации"
#
# Обновляем метадату.
dnf refresh -q || KEY=1
# Выясняем, существует ли пакет cockpit.
[[ $KEY = 1 ]] || dnf in --assumeno cockpit 2>/dev/null |grep -q "==" && KEY=0 || KEY=2
# Пробуем скачать пакет установки cockpit, если есть.
if [[ $KEY = 0 ]]; then
	echo "30"
	echo "# Скачивание Cockpit"
	dnf in -qy --downloadonly cockpit &>/dev/null || KEY=3
fi
# Если получилось скачать - пробуем ставить cockpit.
echo "60"
echo "# Установка Cockpit"
dnf in -qy cockpit &>/dev/null || KEY=4
# Если получилось поставить - включаем сервис cockpit.
echo "80"
echo "# Включение сервиса Cockpit"
systemctl enable --now cockpit.socket &>/dev/null || KEY=5
# Если получилось включить - удаляем установщик.
if [[ $KEY = 0 ]]; then
	echo "90"
	echo "# Удаление установщика Cockpit"
	dnf rm -qy cockpit-repo-install &>/dev/null || KEY=6
fi
echo "100"
# Сообщаем результат.
if [[ $KEY = 0 ]]; then
	echo "# Установка Cockpit завершена"
fi
if [[ $KEY = 1 ]]; then
	echo "# Не удалось обновить метадату\nПроверьте связь с сервером"
fi
if [[ $KEY = 2 ]]; then
	echo "# Не удалось найти пакет установки программы\ncockpit\nОн ещё поддерживается?"
fi
if [[ $KEY = 3 ]]; then
	echo "# Не удалось скачать пакет установки программы\ncockpit\nПроверьте стабильность связи с сервером"
fi
if [[ $KEY = 4 ]]; then
	echo "# Не удалось установить программы\nТребуется починка пакета cockpit"
fi
if [[ $KEY = 5 ]]; then
	echo "# Не удалось включить сервис программы\nТребуется рассмотреть журнал запуска"
fi
if [[ $KEY = 6 ]]; then
	echo "# Установка Cockpit завершена\n\nНе удалось удалить установщик\nТребуется удаление пакета\ncockpit-repo-install\nвручную"
fi
) |
zenity --progress \
	--title="Установщик Сockpit" \
	--text="Установка..." \
	--percentage=0 \
	--width=280

if [ "$?" = -1 ]; then
	zenity --error \
	--text="Установка отменена."
fi
