aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xkiss19
1 files changed, 11 insertions, 8 deletions
diff --git a/kiss b/kiss
index a95fd0b..c5c10ff 100755
--- a/kiss
+++ b/kiss
@@ -50,14 +50,13 @@ prompt() {
as_root() {
[ "$(id -u)" = 0 ] || {
- if command -v sudo >/dev/null; then
- sudo -E KISS_FORCE="$KISS_FORCE" "$@"
- elif command -v doas >/dev/null; then
- KISS_FORCE="$KISS_FORCE" doas "$@"
- else
- exec 3<&0
- su -pc "KISS_FORCE=$KISS_FORCE $* <&3" </dev/tty
- fi
+ log "Using '${su:-su}'"
+
+ case $su in
+ *sudo) sudo -E KISS_FORCE="$KISS_FORCE" "$@" ;;
+ *doas) KISS_FORCE="$KISS_FORCE" doas "$@" ;;
+ *) su -pc "KISS_FORCE=$KISS_FORCE $* <&3" 3<&0 </dev/tty ;;
+ esac
exit
}
@@ -1318,6 +1317,10 @@ main() {
# POSIX correctness.
grep=$(command -v ggrep) || grep='grep'
+ # Figure out which 'sudo' command to use based on the user's choice or
+ # what is available on the system.
+ su=${KISS_SU:-$(command -v sudo || command -v doas)} || su=su
+
# Store the date and time of script invocation to be used as the name
# of the log files the package manager creates uring builds.
time=$(date '+%d-%m-%Y-%H:%M')