From 51f9f91195e00e2e4d78696c89fb9ed6800f1af6 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Wed, 28 Feb 2018 13:32:45 -0700 Subject: [PATCH] Wait for user input if run_elevated fails * This is a workaround for su/sudo timeouts * Should help with issue #17 --- Build Linux | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Build Linux b/Build Linux index a0600d74..9dd0af1b 100755 --- a/Build Linux +++ b/Build Linux @@ -32,7 +32,7 @@ fi function ask() { while :; do - read -p "$1 " -r answer + read -p "$1 [Y/N] " -r answer if echo "$answer" | egrep -iq '^(y|yes|sure)$'; then return 0 elif echo "$answer" | egrep -iq '^(n|no|nope)$'; then @@ -122,10 +122,20 @@ function run_elevated() { prog="$1" shift if which sudo >/dev/null 2>&1; then - sudo "$prog" $* + if ! sudo "$prog" $*; then + echo "ERROR: Failed to run '$prog'" + if ask "Retry?"; then + sudo "$prog" $* + fi + fi else echo -n "Root " - su -c "export REAL_USER=$USER && '$prog' $*" + if ! su -c "export REAL_USER=$USER && '$prog' $*"; then + echo "ERROR: Failed to run '$prog'" + if ask "Retry?"; then + su -c "export REAL_USER=$USER && '$prog' $*" + fi + fi fi }