From 935758d6d627e6c46501bc02b027d0a7a8029705 Mon Sep 17 00:00:00 2001 From: pika Date: Sat, 24 May 2025 00:12:42 +0200 Subject: [PATCH] testing. (might be broken?) --- docker.sh | 404 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 256 insertions(+), 148 deletions(-) diff --git a/docker.sh b/docker.sh index 75b8f68..dc8f41d 100644 --- a/docker.sh +++ b/docker.sh @@ -1,173 +1,281 @@ -#!/usr/bin/env bash +# _arch() { +# local err +# # run _install docker docker-compose --noconfirm +# +# # spin blue bold "Executing arch.." +# # sleep 1.3 +# +# spin bold grey "Executing arch.. installing $PACKAGE" +# if run --err err check-and-install "docker docker-compose"; then +# upclear +# check "Docker was installed" +# else +# throw "Could not install docker" +# echo_error "${err:-}" +# fi +# } +# +# _debian() { +# if ! $trixie; then +# spin bold blue "Executing debian.." +# if run $_sudo apt-get install -y ca-certificates curl; +# $_sudo install -m 0755 -d /etc/apt/keyrings +# $_sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc +# $_sudo chmod a+r /etc/apt/keyrings/docker.asc +# fi +# 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" | $_sudo tee /etc/apt/sources.list.d/docker.list >/dev/null +# +# echo_info "Addet repository. Updating and installing now.." +# sleep 1 +# run $_sudo apt-get update +# run checkAndInstall "docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin" +# else +# echo_info "executing trixie.." +# run _install docker.io docker-compose +# fi +# } -# ─< Check if the given command exists silently >───────────────────────────────────────── -command_exists() { - command -v "$@" >/dev/null 2>&1 -} +{ + #!/usr/bin/env bash -# WHY: -# This import will give you the following variables: -# _sudo="sudo -E" <- only if non root user -# distro = -# arch = bool -# fedora = bool -# opensuse = bool.... -# You can then use it for, `if $arch; then` -# Also this gives you the _install command, which installs a package pased on the packagemanager/distro used. -# CAUTION: -# This only wokrs for generic package names, like neovim, or vim, or tmux etc.. -# not every package packagemanager has the same packagenames for their packages.. -getImports() { - local url="$1" - local import="$(mktemp)" + # ─< Check if the given command exists silently >───────────────────────────────────────── + command_exists() { + command -v "$@" >/dev/null 2>&1 + } - # ─< if $1 is a local file, source this one instead >───────────────────────────────────── - if [ -f "$url" ]; then - source "$url" - sleep 0.1 - return 0 - else - # ─< if $1 is a url, grab it and source it, also deletes afterwards >───────────────────── + getImports() { + local url="$1" + local import="$(mktemp)" if command_exists curl; then curl -fsSL $url -o $import elif command_exists wget; then - wget -o $import $url + wget -O $import $url else echo "curl/wget is required, but missing.." exit 69 fi source "$import" - echo_info "Sourcing external script:${NC} $url" + + echo "${BLUE}Sourcing external script:${NC} $url" sleep 0.1 rm -f "$import" - fi -} + } -init_docker() { - if command_exists docker; then - if confirm "Docker was installed correctly. Do you want to add $(whoami) to the docker group?" + # arch = bool + # fedora = bool + # opensuse = bool.... + # You can then use it for, `if $arch; then` + # Also this gives you the _install command, which installs a package pased on the packagemanager/distro used. + # + # CAUTION: + # This only wokrs for generic package names, like neovim, or vim, or tmux etc.. + # not every package packagemanager has the same packagenames for their packages.. + # + # local beddu=https://git.k4li.de/scripts/beddu/raw/branch/main/dist/beddu.sh + # local pika=https://git.k4li.de/scripts/imports/raw/branch/main/distros.sh + # dream ~= combined beddu and pika + local dream=https://git.k4li.de/scripts/imports/raw/branch/main/dream.sh + + if ! command_exists pkg-install && ! command_exists check-and-install && ! command_exists pen; then + getImports $dream fi + } - # spin and run - spin bold grey "Enabling docker service.." - if run --err err $_sudo systemctl enable --now docker; then - check "Docker service is enabled!" - else - throw "Could not setup the service.." - echo_error "${err:-}" + getDependencies() { + # INFO: + # ╭─────────────────────────────────────────────────────────────────────────╮ + # │ You can define dependencies for various linux distros here. It will │ + # │ automagically be pulled via the $pkgArray[$distro] variable │ + # ╰─────────────────────────────────────────────────────────────────────────╯ + if $debian; then + if $trixie; then + depsDebian=(docker.io docker-compose) + else + depsDebian=(ca-certificates curl) + fi fi + depsUbuntu=(ca-certificates curl) + depsFedora=(dnf-plugins-core) + depsOpensuse=() + depsArch=(docker docker-compose) + depsAlpine=() - echo_info "$(whoami) is now part of the docker group. Restart your session to enable the changes. Also docker was addet as a service. Should autostart from now on." - else - echo_error "Something went wrong!" - fi -} + declare -A deps=( + [debian]="depsDebian" + [ubuntu]="depsUbuntu" + [fedora]="depsFedora" + [arch]="depsArch" + [alpine]="depsAlpine" + [opensuse]="depsOpensuse" + ) -_arch() { - local err - # run _install docker docker-compose --noconfirm + # INFO: + # ╭────────────────────────────────────────────────────────────────╮ + # │ This variable stores the packages you provided for each distro │ + # ╰────────────────────────────────────────────────────────────────╯ + declare -n pkgArray="${deps[$distro]}" - # spin blue bold "Executing arch.." - # sleep 1.3 - - spin bold grey "Executing arch.. installing $PACKAGE" - if run --err err _install docker docker-compose --noconfirm; then - check "Docker was installed" - else - throw "Could not install docker" - echo_error "${err:-}" - fi -} - -_debian() { - if ! $trixie; then - echo_info "executing debian" - sleep 1.3 - run $_sudo apt-get update && - run $_sudo apt-get install -y ca-certificates curl && - run $_sudo install -m 0755 -d /etc/apt/keyrings && - run $_sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && - run $_sudo 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" | $_sudo tee /etc/apt/sources.list.d/docker.list >/dev/null - - echo_info "Addet repository. Updating and installing now.." - sleep 1 - run $_sudo apt-get update - run checkAndInstall "docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin" - else - echo_info "executing trixie.." - run _install docker.io docker-compose - fi -} - -_ubuntu() { - echo_info "executing ubuntu" - sleep 2 - run $_sudo apt-get update && - run $_sudo apt-get install -y ca-certificates curl && - run $_sudo install -m 0755 -d /etc/apt/keyrings && - run $_sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && - run $_sudo 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" | $_sudo tee /etc/apt/sources.list.d/docker.list >/dev/null - - echo_info "Addet repository. Updating and installing now.." - sleep 0.5 - run $_sudo apt-get update - run checkAndInstall "docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin" -} - -_fedora() { - echo_info "executing fedora" - sleep 2 - run _install dnf-plugins-core - run $_sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo - run checkAndInstall "docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin" -} - -main() { - case "$distro" in - arch) _arch ;; - debian) _debian ;; - ubuntu) _ubuntu ;; - fedora) _fedora ;; - *) echo "$distro is not supported by this script" ;; - esac -} - -if getImports "https://git.k4li.de/scripts/beddu/raw/branch/main/dist/beddu.sh" && getImports "https://git.k4li.de/scripts/imports/raw/branch/main/distros.sh"; then - # ─< package variable >─────────────────────────────────────────────────────────────────── - unset PACKAGE - - # ─< argument list variables >──────────────────────────────────────────────────────────── - silent=false - - sleep 0.1 - - PACKAGE=docker - if command_exists "$PACKAGE"; then - echo_warning "$PACKAGE is already installed!" - echo_warning "Exiting now!" - exit 69 - fi - - # ─< parse arguments and get variable contents >────────────────────────────────────────── - for arg in "$@"; do - case "$arg" in - --silent | -s) - export silent=true + case "$distro" in + debian | ubuntu | arch | fedora | alpine | opensuse) + check-and-install ${pkgArray[@]} + ;; + *) + pen bold yellow "There are no dependencies to install for $distro" + return 69 ;; esac - done + } - if main; then - init_docker + #your-script-logic + init-docker() { + local USER="${USER:-$(whoami)}" + if command_exists docker; then + if confirm "Docker was installed correctly. Do you want to add $USER to the docker group?" /dev/null + + pen bold green "Addet repository" + sleep 4 + upclear + spin "Installing docker now.." + if run --err err $_sudo apt-get update; then + upclear + + check "Updated repositories.." + + pen bold blue "Installind docker now.." + + check-and-install "docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin" + else + upclear + throw "Did not install docker correctly.." + echo-error "${err:-}" + fi + fi + ;; + *) + pen bold red "Currently not available for $distro!" + exit 1 + ;; + esac + } + + main() { + if $silent; then + pen yellow "ARG: Executing script silently!" + fi + + if ! getDependencies; then + throw "Error when installing dependencies.." + fi + + if inst-docker; then + init-docker + fi + # case "$distro" in + # arch) + # echo "arch" + # ;; + # debian) + # echo "debian" + # ;; + # ubuntu) + # echo "ubuntu" + # ;; + # fedora) + # echo "fedora" + # ;; + # alpine) + # echo "alpine" + # ;; + # opensuse) + # echo "opensuse" + # ;; + # *) + # echo "$distro is not supported by this script!" + # exit 1 + # ;; + # esac + } + + if getImports; then + # ─< package variable >─────────────────────────────────────────────────────────────────── + unset PACKAGE + + # ─< argument list variables >──────────────────────────────────────────────────────────── + silent=false + + sleep 0.1 + + PACKAGE=packagename + if command_exists "$PACKAGE"; then + echo_warning "$PACKAGE is already installed!" + echo_warning "Exiting now!" + exit 69 + fi + + # ─< parse arguments and get variable contents >────────────────────────────────────────── + for arg in "$@"; do + case "$arg" in + --silent | -s) + export silent=true + ;; + esac + done + + main fi -fi +}