From 8f259464a5561af7ae332df7b809a486188d511f Mon Sep 17 00:00:00 2001 From: LDprg Date: Fri, 24 May 2024 18:14:03 +0200 Subject: [PATCH] finish adding spellcheck --- .pre-commit-config.yaml | 8 ++-- bin/winapps | 51 +++++++++++----------- install/inquirer.sh | 2 + installer.sh | 94 +++++++++++++++++++++++------------------ 4 files changed, 84 insertions(+), 71 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index adf8aa7..199bc64 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -47,7 +47,7 @@ repos: additional_dependencies: - setuptools - # - repo: https://github.com/shellcheck-py/shellcheck-py - # rev: v0.10.0.1 - # hooks: - # - id: shellcheck + - repo: https://github.com/shellcheck-py/shellcheck-py + rev: v0.10.0.1 + hooks: + - id: shellcheck diff --git a/bin/winapps b/bin/winapps index a188bf1..4ffe221 100755 --- a/bin/winapps +++ b/bin/winapps @@ -23,7 +23,7 @@ fi function dprint() { if [ "$DEBUG" = "true" ]; then - echo "[$RUN] ${1}" >>"$HOME/.local/share/winapps/winapps.log" + echo "[$RUN] $1" >>"$HOME/.local/share/winapps/winapps.log" fi } @@ -59,13 +59,13 @@ else fi if [ -z "$RDP_IP" ]; then - if [ ! "$(groups | grep -v libvirt)" ]; then + if groups | grep -vq libvirt; then echo "You are not a member of the libvirt group. Run the below then reboot." - echo ' sudo usermod -a -G libvirt $(whoami)' - echo ' sudo usermod -a -G kvm $(whoami)' + echo " sudo usermod -a -G libvirt $(whoami)" + echo " sudo usermod -a -G kvm $(whoami)" exit fi - if [ ! "$(virsh list | grep -v RDPWindows)" ]; then + if virsh list | grep -vq RDPWindows; then echo "RDPWindows is not running, run:" echo " virsh start RDPWindows" exit @@ -75,39 +75,39 @@ if [ -z "$RDP_IP" ]; then fi -dprint "1:${1}" +dprint "1:$1" dprint "2:$2" # this is just for debug logging anyways # shellcheck disable=SC2145 dprint "@:${@}" MULTI_FLAG="+span" -if [ "${MULTIMON}" = "true" ]; then +if [ "$MULTIMON" = "true" ]; then MULTI_FLAG="/multimon" fi -if [ "${1}" = "windows" ]; then - $FREERDP_COMMAND $RDP_FLAGS /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +dynamic-resolution +auto-reconnect +home-drive /wm-class:"Microsoft Windows" /v:$RDP_IP 1>/dev/null 2>&1 & -elif [ "${1}" = "check" ]; then +if [ "$1" = "windows" ]; then + $FREERDP_COMMAND "$RDP_FLAGS" /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +dynamic-resolution +auto-reconnect +home-drive /wm-class:"Microsoft Windows" /v:"$RDP_IP" 1>/dev/null 2>&1 & +elif [ "$1" = "check" ]; then dprint "CHECK" - $FREERDP_COMMAND $RDP_FLAGS /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +auto-reconnect +home-drive -wallpaper +dynamic-resolution $MULTI_FLAG /app:program:"explorer.exe" /v:$RDP_IP -elif [ "${1}" = "manual" ]; then + $FREERDP_COMMAND "$RDP_FLAGS" /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +auto-reconnect +home-drive -wallpaper +dynamic-resolution $MULTI_FLAG /app:program:"explorer.exe" /v:"$RDP_IP" +elif [ "$1" = "manual" ]; then dprint "MANUAL:$2" - $FREERDP_COMMAND $RDP_FLAGS /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +auto-reconnect +home-drive +dynamic-resolution $MULTI_FLAG /app:program:"$2" /v:"$RDP_IP" 1>/dev/null 2>&1 & -elif [ "${1}" != "install" ]; then + $FREERDP_COMMAND "$RDP_FLAGS" /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +auto-reconnect +home-drive +dynamic-resolution $MULTI_FLAG /app:program:"$2" /v:"$RDP_IP" 1>/dev/null 2>&1 & +elif [ "$1" != "install" ]; then dprint "DIR:${DIR}" - if [ -e "${DIR}/../apps/${1}/info" ]; then + if [ -e "${DIR}/../apps/$1/info" ]; then # shellcheck disable=SC1090 - . "${DIR}/../apps/${1}/info" - ICON="${DIR}/../apps/${1}/icon.svg" - elif [ -e "$HOME/.local/share/winapps/apps/${1}/info" ]; then + . "${DIR}/../apps/$1/info" + ICON="${DIR}/../apps/$1/icon.svg" + elif [ -e "$HOME/.local/share/winapps/apps/$1/info" ]; then # shellcheck disable=SC1090 - . "$HOME/.local/share/winapps/apps/${1}/info" - ICON="$HOME/.local/share/winapps/apps/${1}/icon.svg" - elif [ -e "/usr/local/share/winapps/apps/${1}/info" ]; then + . "$HOME/.local/share/winapps/apps/$1/info" + ICON="$HOME/.local/share/winapps/apps/$1/icon.svg" + elif [ -e "/usr/local/share/winapps/apps/$1/info" ]; then # shellcheck disable=SC1090 - . "/usr/local/share/winapps/apps/${1}/info" - ICON="/usr/local/share/winapps/apps/${1}/icon.svg" + . "/usr/local/share/winapps/apps/$1/info" + ICON="/usr/local/share/winapps/apps/$1/icon.svg" else echo "You need to run 'installer.sh' first." exit 1 @@ -116,9 +116,10 @@ elif [ "${1}" != "install" ]; then dprint "HOME:$HOME" FILE=$(echo "$2" | sed 's|'"$HOME"'|\\\\tsclient\\home|;s|/|\\|g;s|\\|\\\\|g') dprint "FILE:${FILE}" - $FREERDP_COMMAND $RDP_FLAGS /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +auto-reconnect +clipboard +home-drive -wallpaper +dynamic-resolution $MULTI_FLAG /wm-class:"$FULL_NAME" /app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:"$FULL_NAME",cmd:"\"$FILE\"" /v:"$RDP_IP" 1>/dev/null 2>&1 & + # shellcheck disable=SC2140 + $FREERDP_COMMAND "$RDP_FLAGS" /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +auto-reconnect +clipboard +home-drive -wallpaper +dynamic-resolution $MULTI_FLAG /wm-class:"$FULL_NAME" /app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:"$FULL_NAME",cmd:"\"$FILE\"" /v:"$RDP_IP" 1>/dev/null 2>&1 & else - $FREERDP_COMMAND $RDP_FLAGS /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +auto-reconnect +clipboard +home-drive -wallpaper +dynamic-resolution $MULTI_FLAG /wm-class:"$FULL_NAME" /app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:"$FULL_NAME" /v:"$RDP_IP" 1>/dev/null 2>&1 & + $FREERDP_COMMAND "$RDP_FLAGS" /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +auto-reconnect +clipboard +home-drive -wallpaper +dynamic-resolution $MULTI_FLAG /wm-class:"$FULL_NAME" /app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:"$FULL_NAME" /v:"$RDP_IP" 1>/dev/null 2>&1 & fi fi diff --git a/install/inquirer.sh b/install/inquirer.sh index 917e928..2b9e962 100755 --- a/install/inquirer.sh +++ b/install/inquirer.sh @@ -26,6 +26,8 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. +# shellcheck disable=all + # store the current set options OLD_SET=$- set -e diff --git a/installer.sh b/installer.sh index 9ba30ff..845a435 100755 --- a/installer.sh +++ b/installer.sh @@ -42,14 +42,18 @@ function waFindInstalled() { rm -f "$HOME/.local/share/winapps/installed" rm -f "$HOME/.local/share/winapps/detected" cp "$DIR/install/ExtractPrograms.ps1" "$HOME/.local/share/winapps/ExtractPrograms.ps1" + # FIXME + # shellcheck disable=SC2066 for F in "$DIR/apps"; do [[ -e "$F" ]] || break - . "$DIR/apps/${F}/info" - echo "IF EXIST \"${WIN_EXECUTABLE}\" ECHO ${F} >> \\\\tsclient\\home\\.local\\share\\winapps\\installed.tmp" >>"$HOME/.local/share/winapps/installed.bat" + # shellcheck disable=SC1090 + . "$DIR/apps/$F/info" + printf "IF EXIST \"%s\" ECHO %s >> \\\\tsclient\\home\\.local\\share\\winapps\\installed.tmp" "$WIN_EXECUTABLE" "$F" >>"$HOME/.local/share/winapps/installed.bat" done - echo "powershell.exe -ExecutionPolicy Bypass -File \\\\tsclient\\home\\.local\\share\\winapps\\ExtractPrograms.ps1 > \\\\tsclient\home\\.local\\share\\winapps\\detected" >>"$HOME/.local/share/winapps/installed.bat" - echo "RENAME \\\\tsclient\\home\\.local\\share\\winapps\\installed.tmp installed" >>"$HOME/.local/share/winapps/installed.bat" - $FREERDP_COMMAND /d:"${RDP_DOMAIN}" /u:"${RDP_USER}" /p:"${RDP_PASS}" +auto-reconnect +home-drive -wallpaper +span /app:program:"C:\Windows\System32\cmd.exe",cmd:"/C \\\\tsclient\\home\\.local\\share\\winapps\\installed.bat" /v:${RDP_IP} 1>/dev/null 2>&1 & + printf "powershell.exe -ExecutionPolicy Bypass -File \\\\tsclient\\home\\.local\\share\\winapps\\ExtractPrograms.ps1 > \\\\tsclient\home\\.local\\share\\winapps\\detected" >>"$HOME/.local/share/winapps/installed.bat" + printf "RENAME \\\\tsclient\\home\\.local\\share\\winapps\\installed.tmp installed" >>"$HOME/.local/share/winapps/installed.bat" + # shellcheck disable=SC2140 + $FREERDP_COMMAND /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" +auto-reconnect +home-drive -wallpaper +span /app:program:"C:\Windows\System32\cmd.exe",cmd:"/C \\\\tsclient\\home\\.local\\share\\winapps\\installed.bat" /v:"$RDP_IP" 1>/dev/null 2>&1 & COUNT=0 while [ ! -f "$HOME/.local/share/winapps/installed" ]; do sleep 5 @@ -71,7 +75,7 @@ function waFindInstalled() { done if [ $MAKEDEMO = 1 ]; then rm -rf /tmp/winapps_demo - cp -a "$HOME/.local/share/winapps /tmp/winapps_demo" + cp -a "$HOME/.local/share/winapps" /tmp/winapps_demo exit fi else @@ -83,29 +87,29 @@ function waFindInstalled() { } function waConfigureApp() { - if [ -z "${ICON}" ]; then - ICON=$SYS_PATH/apps/${1}/icon.${2} + if [ -z "$ICON" ]; then + ICON=$SYS_PATH/apps/$1/icon.$2 fi - - . "$SYS_PATH/apps/${1}/info" + # shellcheck disable=SC1090 + . "$SYS_PATH/apps/$1/info" echo -n " Configuring $NAME..." if [ $USEDEMO != 1 ]; then - $SUDO rm -f "$APP_PATH/${1}.desktop" + $SUDO rm -f "$APP_PATH/$1.desktop" echo "[Desktop Entry] Name=$NAME -Exec=$BIN_PATH/winapps ${1} %F +Exec=$BIN_PATH/winapps $1 %F Terminal=false Type=Application Icon=$ICON -StartupWMClass=${FULL_NAME} -Comment=${FULL_NAME} -Categories=${CATEGORIES} -MimeType=${MIME_TYPES} - " | $SUDO tee "$APP_PATH/${1}.desktop" >/dev/null - $SUDO rm -f "$BIN_PATH/${1}" - echo "#!/usr/bin/env bash $BIN_PATH/winapps ${1} $* - " | $SUDO tee "$BIN_PATH/${1}" >/dev/null - $SUDO chmod a+x "$BIN_PATH/${1}" +StartupWMClass=$FULL_NAME +Comment=$FULL_NAME +Categories=$CATEGORIES +MimeType=$MIME_TYPES + " | $SUDO tee "$APP_PATH/$1.desktop" >/dev/null + $SUDO rm -f "$BIN_PATH/$1" + echo "#!/usr/bin/env bash $BIN_PATH/winapps $1 $* + " | $SUDO tee "$BIN_PATH/$1" >/dev/null + $SUDO chmod a+x "$BIN_PATH/$1" fi echo " Finished." @@ -114,21 +118,24 @@ MimeType=${MIME_TYPES} function waConfigureApps() { APPS=() - for F in $(cat "$HOME/.local/share/winapps/installed" | sed 's/\r/\n/g'); do - . "$DIR/apps/${F}/info" - APPS+=("${FULL_NAME} (${F})") + while IFS= read -r F; do + # shellcheck disable=SC1090 + . "$DIR/apps/$F/info" + APPS+=("$FULL_NAME ($F)") INSTALLED_EXES+=("$(echo "${WIN_EXECUTABLE##*\\}" | tr '[:upper:]' '[:lower:]')") - done + done < <(sed 's/\r/\n/g' < "$HOME/.local/share/winapps/installed") + # FIXME + # shellcheck disable=SC2207,SC2031 IFS=$'\n' APPS=($(sort <<<"${APPS[*]}")) unset IFS OPTIONS=("Set up all detected pre-configured applications" "Select which pre-configured applications to set up" "Do not set up any pre-configured applications") - if [ "${INSTALL_TYPE}" != 'User' ]; then + if [ "$INSTALL_TYPE" != 'User' ]; then menuFromArr APP_INSTALL "How would you like to handle WinApps pre-configured applications?" "${OPTIONS[@]}" else "grep -l -d skip" menuFromArr APP_INSTALL "How would you like to handle WinApps pre-configured applications? If any web browser is set-up, may be configured as default browser." "${OPTIONS[@]}" fi - if [ "${APP_INSTALL}" = "Select which pre-configured applications to set up" ]; then + if [ "$APP_INSTALL" = "Select which pre-configured applications to set up" ]; then checkbox_input "Which pre-configured apps would you like to set up?" APPS SELECTED_APPS echo "" >"$HOME/.local/share/winapps/installed" for F in "${SELECTED_APPS[@]}"; do @@ -139,16 +146,16 @@ function waConfigureApps() { fi $SUDO cp "$DIR/bin/winapps" "$BIN_PATH/winapps" COUNT=0 - if [ "${APP_INSTALL}" != "Do not set up any pre-configured applications" ]; then - for F in $(cat "$HOME/.local/share/winapps/installed" | sed 's/\r/\n/g'); do + if [ "$APP_INSTALL" != "Do not set up any pre-configured applications" ]; then + while IFS= read -r F; do COUNT=$((COUNT + 1)) - $SUDO cp -r "apps/${F}" "$SYS_PATH/apps" - waConfigureApp "${F}" svg - done + $SUDO cp -r "apps/$F" "$SYS_PATH/apps" + waConfigureApp "$F" svg + done < <(sed 's/\r/\n/g' < "$HOME/.local/share/winapps/installed") fi rm -f "$HOME/.local/share/winapps/installed" rm -f "$HOME/.local/share/winapps/installed.bat" - if (($COUNT == 0)); then + if ((COUNT == 0)); then echo " No configured applications." fi } @@ -156,14 +163,14 @@ function waConfigureApps() { function waConfigureAppsAllOfficiallySupported(){ $SUDO cp "$DIR/bin/winapps" "$BIN_PATH/winapps" COUNT=0 - for F in $(cat "$HOME/.local/share/winapps/installed" | sed 's/\r/\n/g'); do + while IFS= read -r F; do COUNT=$((COUNT + 1)) - $SUDO cp -r "apps/${F}" "$SYS_PATH/apps" - waConfigureApp "${F}" svg - done + $SUDO cp -r "apps/$F" "$SYS_PATH/apps" + waConfigureApp "$F" svg + done < <(sed 's/\r/\n/g' < "$HOME/.local/share/winapps/installed") rm -f "$HOME/.local/share/winapps/installed" rm -f "$HOME/.local/share/winapps/installed.bat" - if (($COUNT == 0)); then + if ((COUNT == 0)); then echo " No configured applications." fi } @@ -171,15 +178,17 @@ function waConfigureAppsAllOfficiallySupported(){ function waConfigureDetectedApps() { if [ -f "$HOME/.local/share/winapps/detected" ]; then sed -i 's/\r//g' "$HOME/.local/share/winapps/detected" + # shellcheck disable=SC1091 . "$HOME/.local/share/winapps/detected" APPS=() + # shellcheck disable=SC2153 for I in "${!NAMES[@]}"; do EXE=${EXES[$I]##*\\} EXE_LOWER=$(echo "$EXE" | tr '[:upper:]' '[:lower:]') if ( dlm=$'\x1F' IFS="$dlm" - [[ "$dlm${INSTALLED_EXES[*]}$dlm" != *"$dlm${EXE_LOWER}$dlm"* ]] + [[ "$dlm${INSTALLED_EXES[*]}$dlm" != *"$dlm$EXE_LOWER$dlm"* ]] ); then APPS+=("${NAMES[$I]} ($EXE)") fi @@ -188,7 +197,7 @@ function waConfigureDetectedApps() { unset IFS OPTIONS=("Set up all detected applications" "Select which applications to set up" "Do not set up any applications") menuFromArr APP_INSTALL "How would you like to handle other detected applications?" "${OPTIONS[@]}" - if [ "${APP_INSTALL}" = "Select which applications to set up" ]; then + if [ "$APP_INSTALL" = "Select which applications to set up" ]; then checkbox_input "Which other apps would you like to set up?" APPS SELECTED_APPS echo "" >"$HOME/.local/share/winapps/installed" for F in "${SELECTED_APPS[@]}"; do @@ -197,7 +206,7 @@ function waConfigureDetectedApps() { APP="${F% (*}" echo "$EXE|${APP}" >>"$HOME/.local/share/winapps/installed" done - elif [ "${APP_INSTALL}" = "Set up all detected applications" ]; then + elif [ "$APP_INSTALL" = "Set up all detected applications" ]; then for I in "${!EXES[@]}"; do EXE=${EXES[$I]##*\\} echo "$EXE|${NAMES[$I]}" >>"$HOME/.local/share/winapps/installed" @@ -227,6 +236,7 @@ CATEGORIES=\"WinApps\" # GNOME mimetypes MIME_TYPES=\"\" " | sudo tee "$SYS_PATH/apps/$EXE/info" >/dev/null + # shellcheck disable=SC2153 echo "${ICONS[$I]}" | base64 -d | sudo tee "$SYS_PATH/apps/$EXE/icon.ico" >/dev/null waConfigureApp "$EXE" ico COUNT=$((COUNT + 1)) @@ -306,7 +316,7 @@ function waUninstallSystem() { done } -if [ -z "${1}" ]; then +if [ -z "$1" ]; then OPTIONS=(User System) menuFromArr INSTALL_TYPE "Would you like to install for the current user or the whole system?" "${OPTIONS[@]}" elif [ "$1" = '--user' ]; then