From bea8aba273fabd12d4c54829ae3aa189e9521d28 Mon Sep 17 00:00:00 2001 From: pika Date: Fri, 16 May 2025 09:54:35 +0200 Subject: [PATCH] testing --- hyprgraphics.sh | 138 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 hyprgraphics.sh diff --git a/hyprgraphics.sh b/hyprgraphics.sh new file mode 100644 index 0000000..45a6226 --- /dev/null +++ b/hyprgraphics.sh @@ -0,0 +1,138 @@ +#!/usr/bin/env bash + +PACKAGE=hyprgraphics + +# ─< Check if the given command exists silently >───────────────────────────────────────── +command_exists() { + command -v "$@" >/dev/null 2>&1 +} + +if command_exists $PACKAGE; then + echo_warning "$PACKAGE is alread installed!" + echo_note "$(which $PACKAGE)" + echo_warning "Exiting now!" + exit 69 +fi + +# 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="https://git.k4li.de/scripts/imports/raw/branch/main/distros.sh" + 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" + sleep 0.2 + rm "$import" +} + +checkComp() { + if ! $arch || ! $debian; then + echo_error "Your distro $distro is not compatible with this script" + return 69 + fi +} + +getDependencies() { + echo_info "Checking build dependencies.." + + # INFO: + # ╭─────────────────────────────────────────────────────────────────────────╮ + # │ You can define dependencies for various linux distros here. It will │ + # │ automagically be pulled via the $pkgArray[$distro] variable │ + # ╰─────────────────────────────────────────────────────────────────────────╯ + # + depsDebian=(libpixman-1-dev libcairo2-dev cmake wayland-protocols hyprutils) + depsArch=(hyprutils) + # depsFedora=() + # depsOpensuse=() + # 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]}" + + for pkg in "${pkgArray[@]}"; do + case "$pkg" in + hyprutils) + if checkComp; then + eval "$(curl -fsSL https://git.k4li.de/scripts/installs/raw/branch/main/hyprutils.sh)" + fi + ;; + *) + if checkComp; then + checkAndInstall "$pkg" + fi + ;; + esac + done +} + +main() { + 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 + case "$@" in + --silent | -s) + silent=true + echo_warning "Running script silently!" + ;; + *) + silent=false + ;; + esac + getDependencies + main +fi