mirror of
https://github.com/moraroy/NonSteamLaunchers-On-Steam-Deck.git
synced 2024-11-20 08:09:18 +01:00
Error handling and shellcheck additions
- Handle `logname: no login name` error for `$USER` - Double quote variables and add curly brackets when concatenated (e.g., directories) - Replace tilde with `$logged_in_home` var - Capture return codes from wget command directly (404 throws custom exit code 8) - Fix code block indentions - Move SC2155 to .shellcheckrc - Add SC2164 to exclude `cd` errors - Breakout SC exclusions to multiple lines to toggle them more easily - Remove duplicate SC entries
This commit is contained in:
parent
aa667f1cb8
commit
23eae27fe0
@ -1 +1,15 @@
|
|||||||
disable=SC2153,SC2155,SC2046,SC1073,SC1078,SC1079,SC2016,SC1091,SC2034,SC2086,SC2153,SC2155,SC2236,SC2317,SC3037,SC3045,SC2046
|
disable=SC1073
|
||||||
|
disable=SC1078
|
||||||
|
disable=SC1079
|
||||||
|
disable=SC1091
|
||||||
|
disable=SC2016
|
||||||
|
disable=SC2034
|
||||||
|
disable=SC2046
|
||||||
|
disable=SC2086
|
||||||
|
disable=SC2153
|
||||||
|
disable=SC2155
|
||||||
|
disable=SC2164
|
||||||
|
disable=SC2236
|
||||||
|
disable=SC2317
|
||||||
|
disable=SC3037
|
||||||
|
disable=SC3045
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# shellcheck disable=SC2155
|
|
||||||
|
|
||||||
set -x # activate debugging (execution shown)
|
set -x # activate debugging (execution shown)
|
||||||
set -o pipefail # capture error from pipes
|
set -o pipefail # capture error from pipes
|
||||||
# set -eu # exit immediately, undefined vars are errors
|
# set -eu # exit immediately, undefined vars are errors
|
||||||
|
|
||||||
# ENVIRONMENT VARIABLES
|
# ENVIRONMENT VARIABLES
|
||||||
# $USER
|
# $USER
|
||||||
logged_in_user=$(logname)
|
[[ -n $(logname >/dev/null 2>&1) ]] && logged_in_user=$(logname) || logged_in_user=$(whoami)
|
||||||
|
|
||||||
# $UID
|
# $UID
|
||||||
# logged_in_uid=$(id -u "${logged_in_user}")
|
# logged_in_uid=$(id -u "${logged_in_user}")
|
||||||
@ -21,7 +19,7 @@ logged_in_home=$(eval echo "~${logged_in_user}")
|
|||||||
download_dir="${logged_in_home}/Downloads/NonSteamLaunchersInstallation"
|
download_dir="${logged_in_home}/Downloads/NonSteamLaunchersInstallation"
|
||||||
|
|
||||||
# Create a log file in the same directory as the desktop file/.sh file
|
# Create a log file in the same directory as the desktop file/.sh file
|
||||||
exec >> ${logged_in_home}/Downloads/NonSteamLaunchers-install.log 2>&1
|
exec >> "${logged_in_home}/Downloads/NonSteamLaunchers-install.log" 2>&1
|
||||||
|
|
||||||
# Version number (major.minor)
|
# Version number (major.minor)
|
||||||
version=v2.99
|
version=v2.99
|
||||||
@ -1335,66 +1333,65 @@ echo "0"
|
|||||||
echo "# Detecting, Updating and Installing GE-Proton"
|
echo "# Detecting, Updating and Installing GE-Proton"
|
||||||
|
|
||||||
# check to make sure compatabilitytools.d exists and makes it if it doesnt
|
# check to make sure compatabilitytools.d exists and makes it if it doesnt
|
||||||
if [ ! -d "${logged_in_home}/.steam/root/compatibilitytools.d" ]; then
|
if [ ! -d "${logged_in_home}/.steam/root/compatibilitytools.d" ]; then
|
||||||
mkdir -p "${logged_in_home}/.steam/root/compatibilitytools.d"
|
mkdir -p "${logged_in_home}/.steam/root/compatibilitytools.d"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create NonSteamLaunchersInstallation subfolder in Downloads folder
|
# Create NonSteamLaunchersInstallation subfolder in Downloads folder
|
||||||
mkdir -p ${logged_in_home}/Downloads/NonSteamLaunchersInstallation
|
mkdir -p "${logged_in_home}/Downloads/NonSteamLaunchersInstallation"
|
||||||
|
|
||||||
# Set the path to the Proton directory
|
# Set the path to the Proton directory
|
||||||
proton_dir=$(find ~/.steam/root/compatibilitytools.d -maxdepth 1 -type d -name "GE-Proton*" | sort -V | tail -n1)
|
proton_dir=$(find "${logged_in_home}/.steam/root/compatibilitytools.d" -maxdepth 1 -type d -name "GE-Proton*" | sort -V | tail -n1)
|
||||||
|
|
||||||
# Set the URLs to download GE-Proton from
|
# Set the URLs to download GE-Proton from
|
||||||
ge_proton_url1=https://github.com/GloriousEggroll/proton-ge-custom/releases/latest/download/GE-Proton.tar.gz
|
ge_proton_url1="https://github.com/GloriousEggroll/proton-ge-custom/releases/latest/download/GE-Proton.tar.gz"
|
||||||
ge_proton_url2=https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton8-13/GE-Proton8-13.tar.gz
|
ge_proton_url2="https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton8-13/GE-Proton8-13.tar.gz"
|
||||||
|
|
||||||
# Check if GE-Proton is installed
|
# Check if GE-Proton is installed
|
||||||
if [ -z "$proton_dir" ]; then
|
if [ -z "$proton_dir" ]; then
|
||||||
# Download GE-Proton using the first URL
|
# Download GE-Proton using the first URL
|
||||||
echo "Downloading GE-Proton using the first URL"
|
echo "Downloading GE-Proton using the first URL"
|
||||||
wget $ge_proton_url1 -O ${logged_in_home}/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz
|
ret_code=$(wget "$ge_proton_url1" -O "${logged_in_home}/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz"; echo $?)
|
||||||
|
|
||||||
# Check if the download succeeded
|
# Check if the download succeeded
|
||||||
if [ $? -ne 0 ]; then
|
if [ "$ret_code" -ne 0 ]; then
|
||||||
# Download GE-Proton using the second URL
|
# Download GE-Proton using the second URL
|
||||||
echo "Downloading GE-Proton using the second URL"
|
echo "Downloading GE-Proton using the second URL"
|
||||||
wget $ge_proton_url2 -O ${logged_in_home}/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz
|
ret_code=$(wget "$ge_proton_url2" -O "${logged_in_home}/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz"; echo $?)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if either download succeeded
|
# Check if either download succeeded
|
||||||
if [ $? -eq 0 ]; then
|
if [ "$ret_code" -eq 0 ]; then
|
||||||
# Install GE-Proton
|
# Install GE-Proton
|
||||||
echo "Installing GE-Proton"
|
echo "Installing GE-Proton"
|
||||||
tar -xvf ${logged_in_home}/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz -C ~/.steam/root/compatibilitytools.d/
|
tar -xvf "${logged_in_home}/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz" -C "${logged_in_home}/.steam/root/compatibilitytools.d"
|
||||||
proton_dir=$(find ~/.steam/root/compatibilitytools.d -maxdepth 1 -type d -name "GE-Proton*" | sort -V | tail -n1)
|
proton_dir=$(find "${logged_in_home}/.steam/root/compatibilitytools.d" -maxdepth 1 -type d -name "GE-Proton*" | sort -V | tail -n1)
|
||||||
else
|
else
|
||||||
# Handle download failure
|
# Handle download failure
|
||||||
echo "Failed to download GE-Proton"
|
echo "Failed to download GE-Proton"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
# Check if installed version is the latest version
|
||||||
# Check if installed version is the latest version
|
installed_version=$(basename $proton_dir | sed 's/GE-Proton-//')
|
||||||
installed_version=$(basename $proton_dir | sed 's/GE-Proton-//')
|
|
||||||
latest_version=$(curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep tag_name | cut -d '"' -f 4)
|
latest_version=$(curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep tag_name | cut -d '"' -f 4)
|
||||||
if [ "$installed_version" != "$latest_version" ]; then
|
if [ "$installed_version" != "$latest_version" ]; then
|
||||||
# Download GE-Proton using the first URL
|
# Download GE-Proton using the first URL
|
||||||
echo "Downloading GE-Proton using the first URL"
|
echo "Downloading GE-Proton using the first URL"
|
||||||
wget $ge_proton_url1 -O ${logged_in_home}/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz
|
ret_code=$(wget "$ge_proton_url1" -O "${logged_in_home}/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz"; echo $?)
|
||||||
|
|
||||||
# Check if the download succeeded
|
# Check if the download succeeded
|
||||||
if [ $? -ne 0 ]; then
|
if [ "$ret_code" -ne 0 ]; then
|
||||||
# Download GE-Proton using the second URL
|
# Download GE-Proton using the second URL
|
||||||
echo "Downloading GE-Proton using the second URL"
|
echo "Downloading GE-Proton using the second URL"
|
||||||
wget $ge_proton_url2 -O ${logged_in_home}/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz
|
ret_code=$(wget "$ge_proton_url2" -O "${logged_in_home}/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz"; echo $?)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if either download succeeded
|
# Check if either download succeeded
|
||||||
if [ $? -eq 0 ]; then
|
if [ "$ret_code" -eq 0 ]; then
|
||||||
# Install GE-Proton
|
# Install GE-Proton
|
||||||
echo "Installing GE-Proton"
|
echo "Installing GE-Proton"
|
||||||
tar -xvf ${logged_in_home}/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz -C ~/.steam/root/compatibilitytools.d/
|
tar -xvf "${logged_in_home}/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz" -C "${logged_in_home}/.steam/root/compatibilitytools.d"
|
||||||
proton_dir=$(find ~/.steam/root/compatibilitytools.d -maxdepth 1 -type d -name "GE-Proton*" | sort -V | tail -n1)
|
proton_dir=$(find "${logged_in_home}/.steam/root/compatibilitytools.d" -maxdepth 1 -type d -name "GE-Proton*" | sort -V | tail -n1)
|
||||||
else
|
else
|
||||||
# Handle download failure
|
# Handle download failure
|
||||||
echo "Failed to download GE-Proton"
|
echo "Failed to download GE-Proton"
|
||||||
@ -2661,8 +2658,9 @@ if [[ -f "${steam_dir}/config/config.vdf" ]]; then
|
|||||||
# Initialize the most_recent variable
|
# Initialize the most_recent variable
|
||||||
most_recent=0
|
most_recent=0
|
||||||
|
|
||||||
|
# TODO: `find` would likely be safer than globbing
|
||||||
# Loop through all the userdata folders
|
# Loop through all the userdata folders
|
||||||
for USERDATA_FOLDER in ~/.steam/root/userdata/*; do
|
for USERDATA_FOLDER in "${logged_in_home}"/.steam/root/userdata/*; do
|
||||||
# Check if the current userdata folder is not the "0" or "anonymous" folder
|
# Check if the current userdata folder is not the "0" or "anonymous" folder
|
||||||
if [[ "$USERDATA_FOLDER" != *"/0" ]] && [[ "$USERDATA_FOLDER" != *"/anonymous" ]]; then
|
if [[ "$USERDATA_FOLDER" != *"/0" ]] && [[ "$USERDATA_FOLDER" != *"/anonymous" ]]; then
|
||||||
# Get the access time of the current userdata folder
|
# Get the access time of the current userdata folder
|
||||||
|
Loading…
Reference in New Issue
Block a user