From 11d124cd0f2137902e8819e19eb7747e6cf22aef Mon Sep 17 00:00:00 2001 From: Rohan Barar Date: Mon, 15 Jul 2024 23:44:16 +1000 Subject: [PATCH] Various changes to appease ShellCheck. --- install/inquirer.sh | 14 +++++++++----- installer.sh | 14 +++++++++++--- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/install/inquirer.sh b/install/inquirer.sh index 1ee9510..180fa07 100755 --- a/install/inquirer.sh +++ b/install/inquirer.sh @@ -7,7 +7,7 @@ declare -r ANSI_CLEAR_TEXT="\033[0m" # Default text. declare -r DIALOG_HEIGHT=14 # Height of dialog window. declare -r TEXT_WIDTH_OFFSET=4 # Offset for fitting title text. declare -r CHK_OPTION_WIDTH_OFFSET=10 # Offset for fitting options. -declare -r MNU_OPTION_WIDTH_OFFSET=7 # Offset for fitting options. +declare -r MNU_OPTION_WIDTH_OFFSET=7 # Offset for fitting options. ### FUNCTIONS ### function inqMenu() { @@ -37,7 +37,7 @@ function inqMenu() { # Find the length of the longest option to set the dialog width. for OPTION in "${TRIMMED_OPTIONS[@]}"; do - if [ "${#OPTION}" -gt $DIALOG_WIDTH ]; then + if [ "${#OPTION}" -gt "$DIALOG_WIDTH" ]; then DIALOG_WIDTH=${#OPTION} fi done @@ -53,6 +53,7 @@ function inqMenu() { # Pad option text with trailing white space to left-align all options. for OPTION in "${TRIMMED_OPTIONS[@]}"; do local PAD_LENGTH=$((DIALOG_WIDTH - MNU_OPTION_WIDTH_OFFSET - ${#OPTION})) + # shellcheck disable=SC2155 local PADDED_OPTION="${OPTION}$(printf '%*s' $PAD_LENGTH)" PADDED_OPTIONS+=("$PADDED_OPTION") done @@ -86,7 +87,7 @@ function inqMenu() { sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') # Remove escapes (introduced by 'dialog' if options have parentheses). - RETURN_STRING=$(echo "$RETURN_STRING" | sed 's/\\//g') + RETURN_STRING="${RETURN_STRING//\\/}" # ${variable//search/replace} # Display question and response. echo -e "${ANSI_LIGHT_GREEN}Q) ${ANSI_CLEAR_TEXT}${ANSI_LIGHT_BLUE}${DIALOG_TEXT}${ANSI_CLEAR_TEXT} --> ${ANSI_LIGHT_GREEN}${RETURN_STRING}${ANSI_CLEAR_TEXT}" @@ -119,7 +120,7 @@ function inqChkBx() { # Find the length of the longest option to set the dialog width. for OPTION in "${TRIMMED_OPTIONS[@]}"; do - if [ "${#OPTION}" -gt $DIALOG_WIDTH ]; then + if [ "${#OPTION}" -gt "$DIALOG_WIDTH" ]; then DIALOG_WIDTH=${#OPTION} fi done @@ -135,6 +136,7 @@ function inqChkBx() { # Pad option text with trailing white space to left-align all options. for OPTION in "${TRIMMED_OPTIONS[@]}"; do local PAD_LENGTH=$((DIALOG_WIDTH - CHK_OPTION_WIDTH_OFFSET - ${#OPTION})) + # shellcheck disable=SC2155 local PADDED_OPTION="${OPTION}$(printf '%*s' $PAD_LENGTH)" PADDED_OPTIONS+=("$PADDED_OPTION") done @@ -164,6 +166,7 @@ function inqChkBx() { 2>&1 >/dev/tty) || exit 0 # Convert the output string into an array. + # shellcheck disable=SC2001 while IFS= read -r LINE; do LINE="${LINE/#\"}" # Remove leading double quote. LINE="${LINE/%\"}" # Remove trailing double quote. @@ -173,10 +176,11 @@ function inqChkBx() { # Final modifications. for (( i=0; i<${#RETURN_ARRAY[@]}; i++ )); do # Remove white space added previously. + # shellcheck disable=SC2001 RETURN_ARRAY[i]=$(echo "${RETURN_ARRAY[i]}" | \ sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') # Remove escapes (introduced by 'dialog' if options have parentheses). - RETURN_ARRAY[i]=$(echo "${RETURN_ARRAY[i]}" | sed 's/\\//g') + RETURN_ARRAY[i]=${RETURN_ARRAY[i]//\\/} # ${variable//search/replace} done } diff --git a/installer.sh b/installer.sh index 526a193..1e882f9 100755 --- a/installer.sh +++ b/installer.sh @@ -1066,6 +1066,7 @@ function waConfigureApps() { # Sort the 'APPS' array in alphabetical order. IFS=$'\n' + # shellcheck disable=SC2207 # Silence warnings regarding preferred use of 'mapfile' or 'read -a'. TEMP_ARRAY=($(sort <<<"${APPS[*]}")) unset IFS APPS=("${TEMP_ARRAY[@]}") @@ -1142,7 +1143,7 @@ function waConfigureDetectedApps() { EXE_FILENAME_NOEXT="${EXE_FILENAME%.*}" # Check if the executable was previously configured as part of setting up officially supported applications. - if [[ ! " ${INSTALLED_EXES[@]} " =~ " ${EXE_FILENAME_LOWERCASE} " ]]; then + if [[ ! " ${INSTALLED_EXES[*]} " == *" ${EXE_FILENAME_LOWERCASE} "* ]]; then # If not previously configured, add the application to the list of detected applications. APPS+=("${NAMES[$INDEX]} (${EXE_FILENAME_NOEXT})") fi @@ -1150,6 +1151,7 @@ function waConfigureDetectedApps() { # Sort the 'APPS' array in alphabetical order. IFS=$'\n' + # shellcheck disable=SC2207 # Silence warnings regarding preferred use of 'mapfile' or 'read -a'. TEMP_ARRAY=($(sort <<<"${APPS[*]}")) unset IFS APPS=("${TEMP_ARRAY[@]}") @@ -1321,11 +1323,14 @@ function waUninstall() { # Extract the file name. DESKTOP_FILE_NAME=$(basename "$DESKTOP_FILE_PATH" | sed 's/\.[^.]*$//') + # Print feedback. + echo -n "Removing '.desktop' file for '${DESKTOP_FILE_NAME}'... " + # Delete the file. $SUDO rm "$DESKTOP_FILE_PATH" # Print feedback. - echo "Removed '.desktop' file for '${DESKTOP_FILE_NAME}'." + echo -e "${DONE_TEXT}Done!${CLEAR_TEXT}" done # Store the paths of bash scripts calling 'WinApps' to launch specific applications in an array, returning an empty array if no such files exist. @@ -1339,11 +1344,14 @@ function waUninstall() { # Extract the file name. BASH_SCRIPT_NAME=$(basename "$BASH_SCRIPT_PATH" | sed 's/\.[^.]*$//') + # Print feedback. + echo -n "Removing bash script for '${BASH_SCRIPT_NAME}'... " + # Delete the file. $SUDO rm "$BASH_SCRIPT_PATH" # Print feedback. - echo "Removed bash script for '${BASH_SCRIPT_NAME}'." + echo -e "${DONE_TEXT}Done!${CLEAR_TEXT}" done # Print caveats.