#!/bin/sh # sc.requires: logger pm_detect_package_manager() { if command -v apt >/dev/null; then echo apt elif command -v pacman >/dev/null; then echo pacman elif command -v dnf >/dev/null; then echo dnf elif command -v yum >/dev/null; then echo yum elif command -v zypper >/dev/null; then echo zypper elif command -v brew >/dev/null; then echo brew elif command -v apk >/dev/null; then echo apk elif command -v nix-env >/dev/null; then echo nix else fatal_log "no supported package manager found" exit 1 fi } SC_PACKAGE_MANAGER="${SC_PACKAGE_MANAGER:-$(pm_detect_package_manager)}" pm_upgrade_packages() { LOGI "Upgrading packages using ${SC_PACKAGE_MANAGER}..." case "$SC_PACKAGE_MANAGER" in apt) sudo apt update && sudo apt upgrade -y ;; pacman) sudo pacman -Syu ;; dnf) sudo dnf upgrade --refresh -y ;; yum) sudo yum update -y ;; zypper) sudo zypper refresh && sudo zypper update -y ;; brew) brew update && brew upgrade ;; apk) sudo apk update && sudo apk upgrade ;; nix) nix-env --upgrade ;; *) fatal_log "Unsupported package manager: ${SC_PACKAGE_MANAGER}" exit 1 ;; esac } pm_install_packages() { LOGI "Installing packages using ${SC_PACKAGE_MANAGER}..." packages="$@" case "$SC_PACKAGE_MANAGER" in apt) sudo apt install -y $packages ;; pacman) sudo pacman -S --noconfirm $packages ;; dnf) sudo dnf install -y $packages ;; yum) sudo yum install -y $packages ;; zypper) sudo zypper install -y $packages ;; brew) brew install $packages ;; apk) sudo apk add $packages ;; nix) nix-env -i $packages ;; *) fatal_log "Unsupported package manager: ${SC_PACKAGE_MANAGER}" exit 1 ;; esac } pm_remove_packages() { LOGI "Removing packages using ${SC_PACKAGE_MANAGER}..." packages="$@" case "$SC_PACKAGE_MANAGER" in apt) sudo apt remove -y $packages ;; pacman) sudo pacman -Rns --noconfirm $packages ;; dnf) sudo dnf remove -y $packages ;; yum) sudo yum remove -y $packages ;; zypper) sudo zypper remove -y $packages ;; brew) brew uninstall $packages ;; apk) sudo apk del $packages ;; nix) nix-env -e $packages ;; *) fatal_log "Unsupported package manager: ${SC_PACKAGE_MANAGER}" exit 1 ;; esac }