diff --git a/hyprpolkit.sh b/hyprpolkit.sh new file mode 100644 index 0000000..801da98 --- /dev/null +++ b/hyprpolkit.sh @@ -0,0 +1,140 @@ +#!/usr/bin/env bash + +# ─< Check if the given command exists silently >───────────────────────────────────────── +command_exists() { + command -v "$@" >/dev/null 2>&1 +} + +# 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.1 + rm -f "$import" +} + +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=( + qt6-wayland-dev + ) + depsFedora=() + depsOpensuse=() + depsArch=() + 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) + checkAndInstall "${pkgArray[@]}" + ;; + *) + echo_error "There are no dependencies to install for $distro" + return 69 + ;; + esac +} + +main() { + if $silent; then + echo_warning "Executing script silently!" + fi + + if ! getDependencies; then + echo_error "Error when installing dependencies.." + 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 >──────────────────────────────────────────────────────────── + unset silent + + sleep 0.1 + + PACKAGE=hyprpolkit-agent + 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 diff --git a/neovim.sh b/neovim.sh index e1fab41..e846ced 100644 --- a/neovim.sh +++ b/neovim.sh @@ -45,27 +45,6 @@ fi } - # command for executing silent mode only when nessessairy - # ex: run "Building $PACKAGE" pkg-install neovim - run() { - local msg=$1 - local cmd="${@:1}" - local err out - - if $silent || [ -z $silent ]; then - spin "$msg" - if run --err err --out out "$cmd"; then - check "Done!" - else - trow "OUTPUT: ${out:-}" - trow "ERROR_OUTPUT: ${err:-}" - fi - else - echo_pkg "$msg" - "$cmd" - fi - } - getDependencies() { local err echo_pkg deps "Checking build dependencies, and installs missing.." diff --git a/test.sh b/test.sh index 97ba304..48c8311 100755 --- a/test.sh +++ b/test.sh @@ -68,7 +68,7 @@ spin-get-dependencies() { line pen red "$deplist" - pkglist=("${deplist[*]}") + pkglist=${deplist[@]} for dep in "${deplist[@]}"; do pen bold grey "Dep: $dep" done