diff --git a/lib-core.sh b/lib-core.sh index d08537e1..f5a5d876 100755 --- a/lib-core.sh +++ b/lib-core.sh @@ -220,7 +220,13 @@ signal_exit() { stop_animation } -operation_aborted() { +signal_abort() { + signal_exit + prompt -e "\n\n Oops! Operation has been aborted...\n\n" + exit 1 +} + +signal_error() { # TODO: make this more accurate IFS=$'\n' @@ -240,7 +246,7 @@ operation_aborted() { # to be cut. Sleeping for awhile may help sleep 0.75; clear - prompt -e "\n\n Oops! Operation has been aborted or failed...\n" + prompt -e "\n\n Oops! Operation failed...\n" prompt -e "=========== ERROR LOG ===========" echo -e "${log}" @@ -277,44 +283,34 @@ operation_aborted() { } rootify() { - local result=0 + local result="0" - trap true SIGINT prompt -w "Executing '$(echo "${@}" | cut -c -35 )...' as root" if [[ -p /dev/stdin ]]; then - ! sudo "${@}" < /dev/stdin && result=1 - error_snippet="${*}" + ! sudo "${@}" < /dev/stdin && result="1"; error_snippet="${*}" else - ! sudo "${@}" && result=1 - error_snippet="${*}" + ! sudo "${@}" && result="1"; error_snippet="${*}" fi - trap signal_exit SIGINT - return "${result}" } userify() { - local result=0 - - trap true SIGINT + local result="0" if [[ -p /dev/stdin ]]; then - ! sudo -u "${MY_USERNAME}" "${@}" < /dev/stdin && result=1 - error_snippet="${*}" + ! sudo -u "${MY_USERNAME}" "${@}" < /dev/stdin && result="1"; error_snippet="${*}" else - ! sudo -u "${MY_USERNAME}" "${@}" && result=1 - error_snippet="${*}" + ! sudo -u "${MY_USERNAME}" "${@}" && result="1"; error_snippet="${*}" fi - trap signal_exit SIGINT - return "${result}" } -trap 'operation_aborted' ERR -trap 'signal_exit' INT EXIT TERM +trap 'signal_exit' EXIT +trap 'signal_error' ERR +trap 'signal_abort' INT TERM TSTP ############################################################################### # USER UTILITIES # diff --git a/lib-install.sh b/lib-install.sh index 5e775472..a5018e47 100755 --- a/lib-install.sh +++ b/lib-install.sh @@ -33,7 +33,10 @@ WHITESUR_SOURCE+=("lib-install.sh") # for installing a util, e.g. 'sassc' (from 'desktop-dev' bundle, or # 'os-utils-gui-dev' bundle, or any other 'sassc' provider bundle) -# Manual package installation is needed for that, but please don't use 'dnf' +# Manual package installation is needed for that, but please don't use 'dnf'. +# The known worst impact of using 'dnf' is you install 'sassc' and then you +# remove it, and you run 'sudo dnf upgrade', and boom! Your 'sudo' and other +# system utilities have gone! installation_sorry() { prompt -w "WARNING: We're sorry, your distro isn't officially supported yet." @@ -63,7 +66,7 @@ prepare_swupd() { dist="NAME=\"Clear Linux OS\"\nVERSION=1\nID=clear-linux-os\nID_LIKE=clear-linux-os\n" dist+="VERSION_ID=${ver}\nANSI_COLOR=\"1;35\"\nSUPPORT_URL=\"https://clearlinux.org\"\nBUILD_ID=${ver}" - prompt -w "\nCLEAR LINUX: Your 'swupd' is broken" + prompt -w "\n CLEAR LINUX: Your 'swupd' is broken" prompt -i "CLEAR LINUX: Patching 'swupd' distro version detection and try again...\n" rootify rm -rf "/etc/os-release"; echo -e "${dist}" | rootify tee "/usr/lib/os-release" > /dev/null rootify ln -s "/usr/lib/os-release" "/etc/os-release" @@ -720,7 +723,7 @@ show_panel_opacity_dialog() { 2) panel_opacity="${PANEL_OPACITY_VARIANTS[2]}" ;; 3) panel_opacity="${PANEL_OPACITY_VARIANTS[3]}" ;; 4) panel_opacity="${PANEL_OPACITY_VARIANTS[4]}" ;; - *) operation_aborted ;; + *) signal_abort ;; esac fi @@ -742,7 +745,7 @@ show_sidebar_size_dialog() { 2) sidebar_size="${SIDEBAR_SIZE_VARIANTS[2]}" ;; 3) sidebar_size="${SIDEBAR_SIZE_VARIANTS[3]}" ;; 4) sidebar_size="${SIDEBAR_SIZE_VARIANTS[4]}" ;; - *) operation_aborted ;; + *) signal_abort ;; esac fi @@ -762,7 +765,7 @@ show_nautilus_style_dialog() { 1) nautilus_style="${NAUTILUS_STYLE_VARIANTS[1]}" ;; 2) nautilus_style="${NAUTILUS_STYLE_VARIANTS[2]}" ;; 3) nautilus_style="${NAUTILUS_STYLE_VARIANTS[3]}" ;; - *) operation_aborted ;; + *) signal_abort ;; esac fi