kiss: Fix update issue

This commit is contained in:
Dylan Araps 2020-01-30 14:42:29 +02:00
parent ca26070683
commit 0a64dc1808
No known key found for this signature in database
GPG Key ID: 46D62DD9F1DE636E
1 changed files with 17 additions and 16 deletions

33
kiss
View File

@ -51,22 +51,17 @@ prompt() {
as_root() { as_root() {
# Simple function to run a command as root using either 'sudo', # Simple function to run a command as root using either 'sudo',
# 'doas' or 'su'. This also handles KISS' environment variables. # 'doas' or 'su'. This also handles KISS' environment variables.
[ "$(id -u)" = 0 ] || { log "Using '${su:-su}'"
log "Using '${su:-su}'"
# doas requires these environment variables to be set as they # doas requires these environment variables to be set as they
# aren't brought over from the calling user. # aren't brought over from the calling user.
env="HOME='$HOME' KISS_FORCE='$KISS_FORCE' KISS_PATH='$KISS_PATH'" env="HOME='$HOME' KISS_FORCE='$KISS_FORCE' KISS_PATH='$KISS_PATH'"
case $su in case $su in
*sudo) sudo -E sh -c "$*" ;; *sudo) sudo -E sh -c "$*" ;;
*doas) doas -- sh -c "$env $*" ;; *doas) doas -- sh -c "$env $*" ;;
*) su -pc "$* <&3" 3<&0 </dev/tty ;; *) su -pc "$* <&3" 3<&0 </dev/tty ;;
esac esac
# Only exit here if we're spawning a second 'kiss' instance.
[ "$1" != kiss ] || exit
}
} }
regex_escape() { regex_escape() {
@ -1145,7 +1140,10 @@ args() {
a|alternatives) a|alternatives)
# Rerun the script with 'su' if the user isn't root. # Rerun the script with 'su' if the user isn't root.
# Cheeky but 'su' can't be used on shell functions themselves. # Cheeky but 'su' can't be used on shell functions themselves.
[ -z "$1" ] || as_root kiss "$action" "$@" [ -z "$1" ] || [ "$(id -u)" = 0 ] || {
as_root kiss "$action" "$@"
return
}
;; ;;
i|install|r|remove) i|install|r|remove)
@ -1153,7 +1151,10 @@ args() {
# Rerun the script with 'su' if the user isn't root. # Rerun the script with 'su' if the user isn't root.
# Cheeky but 'su' can't be used on shell functions themselves. # Cheeky but 'su' can't be used on shell functions themselves.
KISS_FORCE="$KISS_FORCE" as_root kiss "$action" "$@" [ "$(id -u)" = 0 ] || {
KISS_FORCE="$KISS_FORCE" as_root kiss "$action" "$@"
return
}
;; ;;
esac esac