From ae64484955ba4cbe38b8976a1b7d0b168fd6c0d4 Mon Sep 17 00:00:00 2001 From: Neved4 <63655535+Neved4@users.noreply.github.com> Date: Fri, 25 Oct 2024 22:12:15 +0200 Subject: [PATCH] Refactor `RunBrewCmd()` into a generalised `RunCmdAsUser()` --- include/functions | 24 +++++++++++++++++------- include/tests_ports_packages | 2 +- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/include/functions b/include/functions index c5fd71a4..2bfae8db 100644 --- a/include/functions +++ b/include/functions @@ -91,7 +91,7 @@ # ReportManual Log manual actions to report file # ReportSuggestion Add a suggestion to report file # ReportWarning Add a warning and priority to report file -# RunBrewCmd Run Homebrew commands as a normal user instead of root +# RunCmdAsUser Run commands as a normal user instead of root # SafeFile Security tests to perform on a file before using it # SafePerms Check if a file has safe permissions # SafeInput Test provided string to see if it contains unwanted characters @@ -3038,17 +3038,27 @@ ################################################################################ - # Name : RunBrewCmd() - # Description : Run Homebrew commands as a normal user instead of root + # Name : RunCmdAsUser() + # Description : Run commands as a normal user instead of root # - # Parameters : $@ = Homebrew command arguments + # Parameters : $@ = command arguments # Returns : None (executes the command as the appropriate user) ################################################################################ - RunBrewCmd() { + RunCmdAsUser() { case "$(id -u)" in - 0) sudo -u "$SUDO_USER" brew "$@" ;; - *) brew "$@" + 0) + if command -v sudo >/dev/null + then + sudo -u "$SUDO_USER" "$@" + elif command -v su >/dev/null + then + su "$(id -un)" -c "$@" + else + "$@" + fi + ;; + *) "$@" esac } diff --git a/include/tests_ports_packages b/include/tests_ports_packages index c8ec4b2e..8802d117 100644 --- a/include/tests_ports_packages +++ b/include/tests_ports_packages @@ -127,7 +127,7 @@ LogText "Test: Querying brew to get package list" Display --indent 4 --text "- Querying brew for installed packages" LogText "Output:"; LogText "-----" - GPACKAGES=$(RunBrewCmd list --versions) + GPACKAGES=$(RunCmdAsUser brew list --versions) while IFS= read -r PKG; do PACKAGE_NAME=$(echo ${PKG} | ${CUTBINARY} -d ' ' -f1) PACKAGE_VERSION=$(echo ${PKG} | ${CUTBINARY} -d ' ' -f2)