From 548199bc38d1a5b348b930f110c92289279a6554 Mon Sep 17 00:00:00 2001 From: Rico Tiongson Date: Thu, 7 May 2020 22:39:47 +0800 Subject: [PATCH] Improve comfortable-swipe status and trysudo (#85) --- VERSION | 2 +- comfortable-swipe | 54 +++++++++++++++++++++++++++++++++++++++-------- install | 17 ++++----------- 3 files changed, 50 insertions(+), 23 deletions(-) diff --git a/VERSION b/VERSION index af847dd..b6c8bcf 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v1.2.1 +v1.2.2 diff --git a/comfortable-swipe b/comfortable-swipe index c343cef..fcfe5d5 100755 --- a/comfortable-swipe +++ b/comfortable-swipe @@ -173,15 +173,53 @@ function buffer { ########## +function _program_running { + pgrep -f "$BASENAME" | fgrep -v $$ > /dev/null 2>&1 +} + + # verbosely show comfortable-swipe status function status { - # TODO: show configuration status as well + # show autostart status echo "Autostart is $("$BASENAME" autostart status)" - if pgrep -f "$BASENAME" | fgrep -v $$ > /dev/null 2>&1; then + # show program status + if _program_running; then echo "Program is RUNNING" else echo "Program is STOPPED" fi + # show configuration status + echo -------------------- + echo "Configuration: $(config path)" + mouse3="$(config get mouse3)" + mouse4="$(config get mouse4)" + for key in $(config keys); do + value="$(config get "$key")" + if [[ -z "$value" ]]; then + vstatus="NOTSET" + else + vstatus="VALID" + if [[ "$key" != mouse* ]]; then + if [[ "$key" == *3 && -n "$mouse3" ]]; then + vstatus="IGNORED" + elif [[ "$key" == *4 && -n "$mouse4" ]]; then + vstatus="IGNORED" + fi + fi + if [[ "$key" == threshold ]]; then + if ! [[ "$value" =~ ^[+-]?[0-9]+\.?[0-9]*$ ]]; then + # not a float + vstatus="INVALID" + fi + fi + fi + echo "$key $vstatus" | awk '{printf "%9s is %7s", $1, $2}' + if [[ ! -z "$value" ]]; then + echo " ($value)" + else + echo + fi + done } @@ -291,8 +329,7 @@ function config { local RESULT="$(egrep -v "^\\s*($(echo "$DELETE" | awk '{print $1}' | paste -s -d '|'))\\s*=" "$CONFIG")" echo "$RESULT" > "$CONFIG" # restart comfortable-swipe if it is running - if [[ "$(status)" == ON ]]; then - stop > /dev/null 2>&1 + if _program_running; then start > /dev/null fi fi @@ -378,8 +415,7 @@ function config { # show newly set value echo "$KEY = $(get "$KEY")" # restart comfortable-swipe if it is running - if [[ "$(status)" == ON ]]; then - stop > /dev/null 2>&1 + if _program_running; then start > /dev/null fi } @@ -451,7 +487,7 @@ function autostart { ##################################### # toggle to opposite autostart status function toggle { - [[ $(status) = ON ]] && off || on + [[ $(status) == ON ]] && off || on } ###################### @@ -495,9 +531,9 @@ else # try to invoke config set / get depending on number of arguments if [[ $# -eq 1 ]]; then # one argument, use shorthand get - "$BASENAME" config get "$1" || abort + config get "$1" || abort else # multiple arguments, use shorthand set - "$BASENAME" config set "$@" 2> /dev/null || abort + config set "$@" 2> /dev/null || abort fi fi diff --git a/install b/install index ed2cdbb..54d4cb6 100755 --- a/install +++ b/install @@ -97,14 +97,10 @@ function install_configuration_file { # function install_main_program { # copy source to target with executable permissions - TRYSUDO= - if ! touch "$TARGET" 2> /dev/null; then - TRYSUDO=sudo - fi # install to target, with hardcoded version - $TRYSUDO sed -E "s/^VERSION=.*/VERSION=$VERSION/" "$SOURCE" > "$TARGET" + trysudo sed -E "s/^VERSION=.*/VERSION=$VERSION/" "$SOURCE" > "$TARGET" # allow execute permissions - $TRYSUDO chmod +x "$TARGET" + trysudo chmod +x "$TARGET" echo "Installed: $TARGET" } @@ -119,13 +115,8 @@ function install_cpp_program { TMP_TARGET="$(mktemp)" $COMPILE "$COMPILE_SOURCE" -o "$TMP_TARGET" -DCOMFORTABLE_SWIPE_VERSION="\"$VERSION\"" -DCOMFORTABLE_SWIPE_CONFIG="\"$CONF_TARGET\"" -DCOMFORTABLE_SWIPE_AUTOSTART="\"$AUTOSTART_TARGET\"" # compilation ok, now try to install - # eheck permissions maybe if will need sudo - TRYSUDO= - if ! touch "$COMPILE_TARGET" 2> /dev/null; then - TRYSUDO=sudo - fi - # move executable to target - $TRYSUDO mv "$TMP_TARGET" "$COMPILE_TARGET" + # check permissions maybe if will need sudo + trysudo mv "$TMP_TARGET" "$COMPILE_TARGET" echo "Installed: $COMPILE_TARGET" }