#!/bin/sh -e # ─< ANSI color codes >─────────────────────────────────────────────────────────────────── RED='\033[0;31m' CYAN='\033[0;36m' YELLOW='\033[0;33m' LIGHT_GREEN='\033[0;92m' BOLD='\033[1m' NC='\033[0m' # No Color echo_error() { printf "${BOLD}${RED}ERROR: ${NC}${RED}%s${NC}\n" "$1" >&2 } echo_info() { printf "${BOLD}${CYAN}INFO: ${NC}${CYAN}%s${NC}\n" "$1" } echo_warning() { printf "${BOLD}${YELLOW}WARNING: ${NC}${YELLOW}%s${NC}\n" "$1" } echo_note() { printf "${BOLD}${LIGHT_GREEN}NOTE: ${NC}${LIGHT_GREEN}%s${NC}\n" "$1" } check_sudo() { # check for $su if [ "$USER" != "root" ]; then if command -v sudo >/dev/null 2>&1; then su="sudo" else echo "Are you sure you can handle this? You're not root and sudo cannot be found.. [y/n]" read -r sud ──────────────────────────────────────── check_dist() { if [ -e /etc/os-release ]; then echo_info "Detecting distribution..." . /etc/os-release # ─< Convert $ID and $ID_LIKE to lowercase >────────────────────────────────────────────── ID=$(printf "%s" "$ID" | tr '[:upper:]' '[:lower:]') ID_LIKE=$(printf "%s" "$ID_LIKE" | tr '[:upper:]' '[:lower:]') case "$ID" in ubuntu | pop) _ubuntu ;; debian) _debian ;; fedora) _fedora ;; # alpine) _alpine ;; arch | manjaro | garuda | endeavour) _arch ;; opensuse*) inst_opensuse ;; *) if [ "${ID_LIKE#*debian}" != "$ID_LIKE" ]; then _debian elif [ "${ID_LIKE#*ubuntu}" != "$ID_LIKE" ]; then _ubuntu elif [ "${ID_LIKE#*arch}" != "$ID_LIKE" ]; then _arch elif [ "${ID_LIKE#*fedora}" != "$ID_LIKE" ]; then _fedora # elif [ "${ID_LIKE#*suse}" != "$ID_LIKE" ]; then # _opensuse else echo_error "Unsupported distribution: $ID" exit 1 fi ;; esac else echo_error "Unable to detect distribution. /etc/os-release not found." exit 1 fi } _debian() { clear echo_info "executing debian" sleep 2 $su apt-get update && $su apt-get install -y ca-certificates curl && $su install -m 0755 -d /etc/apt/keyrings && $su curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && $su chmod a+r /etc/apt/keyrings/docker.asc && sleep 0.5 if [ "$VERSION_CODENAME" == "trixie" ]; then VERSION_CODENAME="bookworm" fi echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | $su tee /etc/apt/sources.list.d/docker.list >/dev/null clear && echo_info "Addet repository. Updating and installing now.." sleep 1 $su apt-get update $su apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin } _ubuntu() { clear echo_info "executing ubuntu" sleep 2 $su apt-get update && $su apt-get install -y ca-certificates curl && $su install -m 0755 -d /etc/apt/keyrings && $su curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && $su chmod a+r /etc/apt/keyrings/docker.asc 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" | $su tee /etc/apt/sources.list.d/docker.list >/dev/null clear && echo_info "Addet repository. Updating and installing now.." sleep 0.5 $su apt-get update $su apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin } _fedora() { clear echo_info "executing fedora" sleep 2 $su dnf -y install dnf-plugins-core $su dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo $su dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin } _arch() { clear echo_info "executing arch" sleep 2 $su pacman -S docker docker-compose --noconfirm } init_docker() { if command -v docker >/dev/null 2>&1; then echo_info "Docker was installed correctly. Do you want to add $(whoami) to the docker group? (y/n)" read -r dgroup