# _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 # } { #!/usr/bin/env bash # ─< Check if the given command exists silently >───────────────────────────────────────── command_exists() { command -v "$@" >/dev/null 2>&1 } 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 else echo "curl/wget is required, but missing.." exit 69 fi source "$import" echo "${BLUE}Sourcing external script:${NC} $url" sleep 0.1 rm -f "$import" } setup-env() { # 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.. # # 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 } 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=() declare -A deps=( [debian]="depsDebian" [ubuntu]="depsUbuntu" [fedora]="depsFedora" [arch]="depsArch" [alpine]="depsAlpine" [opensuse]="depsOpensuse" ) # INFO: # ╭────────────────────────────────────────────────────────────────╮ # │ This variable stores the packages you provided for each distro │ # ╰────────────────────────────────────────────────────────────────╯ declare -n pkgArray="${deps[$distro]}" 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 } #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 }