From ffd4d9d3ca4afd67c67b27f4e17803b5aede183b Mon Sep 17 00:00:00 2001
From: the-sane <3657071+the-sane@users.noreply.github.com>
Date: Tue, 1 Nov 2022 11:03:18 -0400
Subject: [PATCH] Reorder functions
---
lug-helper.sh | 548 +++++++++++++++++++++++++-------------------------
1 file changed, 279 insertions(+), 269 deletions(-)
diff --git a/lug-helper.sh b/lug-helper.sh
index 5f9c9f1..adcb6cd 100755
--- a/lug-helper.sh
+++ b/lug-helper.sh
@@ -594,114 +594,6 @@ getdirs() {
backup_path="$conf_dir/$conf_subdir"
}
-# Display all directories currently used by this helper and Star Citizen
-display_dirs() {
- unset dirs_list
-
- # Helper configs and keybinds
- if [ -d "$conf_dir/$conf_subdir" ]; then
- dirs_list+=("\n\nHelper configuration:\n$conf_dir/$conf_subdir\n\nKeybind backups:\n$conf_dir/$conf_subdir/keybinds")
- fi
-
- # Wine prefix
- if [ -f "$conf_dir/$conf_subdir/$wine_conf" ]; then
- dirs_list+="\n\nWine prefix:\n$(cat "$conf_dir/$conf_subdir/$wine_conf")"
- fi
-
- # Star Citizen installation
- if [ -f "$conf_dir/$conf_subdir/$game_conf" ]; then
- dirs_list+="\n\nStar Citizen game directory:\n$(cat "$conf_dir/$conf_subdir/$game_conf")"
- fi
-
- # Star Citizen shaders path
- if [ -f "$conf_dir/$conf_subdir/$wine_conf" ]; then
- dirs_list+="\n\nStar Citizen shaders:\n$(cat "$conf_dir/$conf_subdir/$wine_conf")/$appdata_path"
- fi
-
- # Lutris runners
- if [ -d "$runners_dir_native" ] || [ -d "$runners_dir_flatpak" ]; then
- dirs_list+="\n\nLutris Runners:"
- if [ -d "$runners_dir_native" ]; then
- dirs_list+="\n$runners_dir_native"
- fi
- if [ -d "$runners_dir_flatpak" ]; then
- dirs_list+="\n$runners_dir_flatpak"
- fi
- fi
-
- # Lutris dxvk
- if [ -d "$dxvk_dir_native" ] || [ -d "$dxvk_dir_flatpak" ]; then
- dirs_list+="\n\nLutris DXVK Versions:"
- if [ -d "$dxvk_dir_native" ]; then
- dirs_list+="\n$dxvk_dir_native"
- fi
- if [ -d "$dxvk_dir_flatpak" ]; then
- dirs_list+="\n$dxvk_dir_flatpak"
- fi
- fi
-
- # Format the info header
- message_heading="These directories are currently being used by this Helper and Star Citizen"
- if [ "$use_zenity" -eq 1 ]; then
- message_heading="$message_heading"
- fi
-
- message info "$message_heading\n${dirs_list[@]}"
-}
-
-# Save exported keybinds, wipe the USER directory, and restore keybinds
-rm_userdir() {
- # Prompt user to back up the current keybinds in the game
- message info "Before proceeding, please be sure you have exported\nyour Star Citizen keybinds from within the game.\n\nTo do this, launch the game and go to:\nOptions->Keybindings->Control Profiles->Save Control Settings\n\nGo on; I'll wait."
-
- # Get/Set directory paths
- getdirs
- if [ "$?" -eq 1 ]; then
- # User cancelled and wants to return to the main menu
- # or there was an error
- return 0
- fi
-
- # Sanity check
- if [ ! -d "$user_dir" ]; then
- message warning "USER directory not found. There is nothing to delete!\n\n$user_dir"
- return 0
- fi
-
- # Check for exported keybind files
- if [ ! -d "$keybinds_dir" ] || [ -z "$(ls -A "$keybinds_dir")" ]; then
- if message question "Warning: No exported keybindings found.\nContinuing will erase your existing keybinds!\n\nDo you want to continue anyway?"; then
- exported=0
- else
- # User said no
- return 0
- fi
- else
- exported=1
- fi
-
- if message question "The following directory will be deleted:\n\n$user_dir\n\nDo you want to proceed?"; then
- # Back up keybinds
- if [ "$exported" -eq 1 ]; then
- debug_print continue "Backing up keybinds to $backup_path/keybinds..."
- mkdir -p "$backup_path/keybinds" && cp -r "$keybinds_dir/." "$backup_path/keybinds/"
- fi
-
- # Wipe the user directory
- debug_print continue "Wiping $user_dir..."
- rm -r "$user_dir"
-
- # Restore custom keybinds
- if [ "$exported" -eq 1 ]; then
- debug_print continue "Restoring keybinds..."
- mkdir -p "$keybinds_dir" && cp -r "$backup_path/keybinds/." "$keybinds_dir/"
- message info "To re-import your keybinds, select it in-game from the list:\nOptions->Keybindings->Control Profiles"
- fi
-
- message info "Your Star Citizen USER directory has been cleaned up!"
- fi
-}
-
############################################################################
######## begin preflight check functions ###################################
@@ -1702,6 +1594,285 @@ dxvk_manage() {
######## end download functions ############################################
############################################################################
+############################################################################
+######## begin maintenance functions #######################################
+############################################################################
+
+# Toggle between the LIVE and PTU game directories for all Helper functions
+set_version() {
+ if [ "$live_or_ptu" = "$live_dir" ]; then
+ live_or_ptu="$ptu_dir"
+ message info "The Helper will now target your Star Citizen PTU installation."
+ elif [ "$live_or_ptu" = "$ptu_dir" ]; then
+ live_or_ptu="$live_dir"
+ message info "The Helper will now target your Star Citizen LIVE installation."
+ else
+ debug_print continue "Unexpected game version provided. Defaulting to the LIVE installation."
+ live_or_ptu="$live_dir"
+ fi
+}
+
+# Save exported keybinds, wipe the USER directory, and restore keybinds
+rm_userdir() {
+ # Prompt user to back up the current keybinds in the game
+ message info "Before proceeding, please be sure you have exported\nyour Star Citizen keybinds from within the game.\n\nTo do this, launch the game and go to:\nOptions->Keybindings->Control Profiles->Save Control Settings\n\nGo on; I'll wait."
+
+ # Get/Set directory paths
+ getdirs
+ if [ "$?" -eq 1 ]; then
+ # User cancelled and wants to return to the main menu
+ # or there was an error
+ return 0
+ fi
+
+ # Sanity check
+ if [ ! -d "$user_dir" ]; then
+ message warning "USER directory not found. There is nothing to delete!\n\n$user_dir"
+ return 0
+ fi
+
+ # Check for exported keybind files
+ if [ ! -d "$keybinds_dir" ] || [ -z "$(ls -A "$keybinds_dir")" ]; then
+ if message question "Warning: No exported keybindings found.\nContinuing will erase your existing keybinds!\n\nDo you want to continue anyway?"; then
+ exported=0
+ else
+ # User said no
+ return 0
+ fi
+ else
+ exported=1
+ fi
+
+ if message question "The following directory will be deleted:\n\n$user_dir\n\nDo you want to proceed?"; then
+ # Back up keybinds
+ if [ "$exported" -eq 1 ]; then
+ debug_print continue "Backing up keybinds to $backup_path/keybinds..."
+ mkdir -p "$backup_path/keybinds" && cp -r "$keybinds_dir/." "$backup_path/keybinds/"
+ fi
+
+ # Wipe the user directory
+ debug_print continue "Wiping $user_dir..."
+ rm -r "$user_dir"
+
+ # Restore custom keybinds
+ if [ "$exported" -eq 1 ]; then
+ debug_print continue "Restoring keybinds..."
+ mkdir -p "$keybinds_dir" && cp -r "$backup_path/keybinds/." "$keybinds_dir/"
+ message info "To re-import your keybinds, select it in-game from the list:\nOptions->Keybindings->Control Profiles"
+ fi
+
+ message info "Your Star Citizen USER directory has been cleaned up!"
+ fi
+}
+
+# Delete the shaders directory
+rm_shaders() {
+ # Get/Set directory paths
+ getdirs
+ if [ "$?" -eq 1 ]; then
+ # User cancelled and wants to return to the main menu, or error
+ return 0
+ fi
+
+ # Loop through all possible shader directories
+ for appdata_dir in "$shaders_dir"/*; do
+ if [ -d "$appdata_dir/$shaders_subdir" ]; then
+ # If a shaders directory is found, delete it
+ if message question "The following directory will be deleted:\n\n$appdata_dir/$shaders_subdir\n\nDo you want to proceed?"; then
+ debug_print continue "Deleting $appdata_dir/$shaders_subdir..."
+ rm -r "$appdata_dir/$shaders_subdir"
+ fi
+ fi
+ done
+
+ message info "All shaders have been deleted"
+}
+
+# Delete DXVK cache
+rm_dxvkcache() {
+ # Get/Set directory paths
+ getdirs
+ if [ "$?" -eq 1 ]; then
+ # User cancelled and wants to return to the main menu
+ # or there was an error
+ return 0
+ fi
+
+ # Sanity check
+ if [ ! -f "$dxvk_cache" ]; then
+ message warning "Unable to find the DXVK cache file. There is nothing to delete!\n\n$dxvk_cache"
+ return 0
+ fi
+
+ # Delete the cache file
+ if message question "The following file will be deleted:\n\n$dxvk_cache\n\nDo you want to proceed?"; then
+ debug_print continue "Deleting $dxvk_cache..."
+ rm "$dxvk_cache"
+ message info "Your DXVK cache has been deleted!"
+ fi
+}
+
+# Display all directories currently used by this helper and Star Citizen
+display_dirs() {
+ unset dirs_list
+
+ # Helper configs and keybinds
+ if [ -d "$conf_dir/$conf_subdir" ]; then
+ dirs_list+=("\n\nHelper configuration:\n$conf_dir/$conf_subdir\n\nKeybind backups:\n$conf_dir/$conf_subdir/keybinds")
+ fi
+
+ # Wine prefix
+ if [ -f "$conf_dir/$conf_subdir/$wine_conf" ]; then
+ dirs_list+="\n\nWine prefix:\n$(cat "$conf_dir/$conf_subdir/$wine_conf")"
+ fi
+
+ # Star Citizen installation
+ if [ -f "$conf_dir/$conf_subdir/$game_conf" ]; then
+ dirs_list+="\n\nStar Citizen game directory:\n$(cat "$conf_dir/$conf_subdir/$game_conf")"
+ fi
+
+ # Star Citizen shaders path
+ if [ -f "$conf_dir/$conf_subdir/$wine_conf" ]; then
+ dirs_list+="\n\nStar Citizen shaders:\n$(cat "$conf_dir/$conf_subdir/$wine_conf")/$appdata_path"
+ fi
+
+ # Lutris runners
+ if [ -d "$runners_dir_native" ] || [ -d "$runners_dir_flatpak" ]; then
+ dirs_list+="\n\nLutris Runners:"
+ if [ -d "$runners_dir_native" ]; then
+ dirs_list+="\n$runners_dir_native"
+ fi
+ if [ -d "$runners_dir_flatpak" ]; then
+ dirs_list+="\n$runners_dir_flatpak"
+ fi
+ fi
+
+ # Lutris dxvk
+ if [ -d "$dxvk_dir_native" ] || [ -d "$dxvk_dir_flatpak" ]; then
+ dirs_list+="\n\nLutris DXVK Versions:"
+ if [ -d "$dxvk_dir_native" ]; then
+ dirs_list+="\n$dxvk_dir_native"
+ fi
+ if [ -d "$dxvk_dir_flatpak" ]; then
+ dirs_list+="\n$dxvk_dir_flatpak"
+ fi
+ fi
+
+ # Format the info header
+ message_heading="These directories are currently being used by this Helper and Star Citizen"
+ if [ "$use_zenity" -eq 1 ]; then
+ message_heading="$message_heading"
+ fi
+
+ message info "$message_heading\n${dirs_list[@]}"
+}
+
+# Display the LUG Wiki
+display_wiki() {
+ # Display a message containing the URL
+ message info "See the Wiki for our Quick-Start Guide, Manual Installation instructions,\nPerformance Tuning, and Common Issues and Solutions:\n\n$lug_wiki"
+}
+
+# Delete the helper's config directory
+reset_helper() {
+ # Delete the shader directory
+ if message question "All config files will be deleted from:\n\n$conf_dir/$conf_subdir\n\nDo you want to proceed?"; then
+ debug_print continue "Deleting $conf_dir/$conf_subdir/*.conf..."
+ rm "$conf_dir/$conf_subdir/"*.conf
+ message info "The Helper has been reset!"
+ fi
+}
+
+# Show maintenance/troubleshooting options
+maintenance_menu() {
+ # Loop the menu until the user selects quit
+ looping_menu="true"
+ while [ "$looping_menu" = "true" ]; do
+ # Configure the menu
+ menu_text_zenity="Game Maintenance and Troubleshooting\n\nYou may choose from the following options:"
+ menu_text_terminal="Game Maintenance and Troubleshooting\n\nYou may choose from the following options:"
+ menu_text_height="100"
+
+ # Configure the menu options
+ version_msg="Switch the Helper between LIVE and PTU (Currently: $live_or_ptu)"
+ userdir_msg="Delete my Star Citizen USER folder and preserve my keybinds"
+ shaders_msg="Delete my shaders (Do this after each game update)"
+ vidcache_msg="Delete my DXVK cache"
+ dirs_msg="Display Helper and Star Citizen directories"
+ wiki_msg="Show the LUG Wiki"
+ reset_msg="Reset Helper configs"
+ quit_msg="Return to the main menu"
+
+ # Set the options to be displayed in the menu
+ menu_options=("$version_msg" "$userdir_msg" "$shaders_msg" "$vidcache_msg" "$dirs_msg" "$wiki_msg" "$reset_msg" "$quit_msg")
+ # Set the corresponding functions to be called for each of the options
+ menu_actions=("set_version" "rm_userdir" "rm_shaders" "rm_dxvkcache" "display_dirs" "display_wiki" "reset_helper" "menu_loop_done")
+
+ # Calculate the total height the menu should be
+ menu_height="$(($menu_option_height * ${#menu_options[@]} + $menu_text_height))"
+
+ # Set the label for the cancel button
+ cancel_label="Go Back"
+
+ # Call the menu function. It will use the options as configured above
+ menu
+ done
+}
+
+############################################################################
+######## end maintenance functions #########################################
+############################################################################
+
+
+# Install Star Citizen using Lutris
+install_game() {
+ # Check if Lutris is installed
+ lutris_detect
+ if [ "$lutris_installed" = "false" ]; then
+ message warning "Lutris is required but does not appear to be installed."
+ return 0
+ fi
+ # Check if the install script exists
+ if [ ! -f "$install_script" ]; then
+ message warning "Lutris install script not found.\n\n$install_script\n\nIt is included in our official releases here:\n$releases_url"
+ return 0
+ fi
+
+ if message question "Before proceeding, please refer to our Quick Start Guide:\n\n$lug_wiki\n\nAre you ready to continue?"; then
+ # Detect which version of Lutris is installed
+ if [ "$lutris_native" = "true" ] && [ "$lutris_flatpak" = "true" ]; then
+ # Both versions of Lutris are installed so ask the user
+ if message options "Flatpak" "Native" "This Helper has detected both the Native and Flatpak versions of Lutris\nWhich version would you like to use?"; then
+ # Native version
+ install_version="native"
+ else
+ # Flatpak version
+ install_version="flatpak"
+ fi
+ elif [ "$lutris_native" = "true" ]; then
+ # Native version only
+ install_version="native"
+ elif [ "$lutris_flatpak" = "true" ]; then
+ # Flatpak version only
+ install_version="flatpak"
+ else
+ # We shouldn't get here
+ debug_print exit "Script error: Unable to detect Lutris version in install_game function. Aborting."
+ fi
+
+ # Run the appropriate installer
+ if [ "$install_version" = "native" ]; then
+ lutris --install "$install_script" &
+ elif [ "$install_version" = "flatpak" ]; then
+ flatpak run --file-forwarding net.lutris.Lutris --install @@ "$install_script" @@ &
+ else
+ # We shouldn't get here
+ debug_print exit "Script error: Unknown condition for install_version in install_game() function. Aborting."
+ fi
+ message info "The installation will continue in Lutris"
+ fi
+}
+
# Deploy Easy Anti-Cheat Workaround
eac_workaround() {
# Get/set directory paths
@@ -1756,143 +1927,6 @@ eac_workaround() {
fi
}
-# Install Star Citizen using Lutris
-install_game() {
- # Check if Lutris is installed
- lutris_detect
- if [ "$lutris_installed" = "false" ]; then
- message warning "Lutris is required but does not appear to be installed."
- return 0
- fi
- # Check if the install script exists
- if [ ! -f "$install_script" ]; then
- message warning "Lutris install script not found.\n\n$install_script\n\nIt is included in our official releases here:\n$releases_url"
- return 0
- fi
-
- if message question "Before proceeding, please refer to our Quick Start Guide:\n\n$lug_wiki\n\nAre you ready to continue?"; then
- # Detect which version of Lutris is installed
- if [ "$lutris_native" = "true" ] && [ "$lutris_flatpak" = "true" ]; then
- # Both versions of Lutris are installed so ask the user
- if message options "Flatpak" "Native" "This Helper has detected both the Native and Flatpak versions of Lutris\nWhich version would you like to use?"; then
- # Native version
- install_version="native"
- else
- # Flatpak version
- install_version="flatpak"
- fi
- elif [ "$lutris_native" = "true" ]; then
- # Native version only
- install_version="native"
- elif [ "$lutris_flatpak" = "true" ]; then
- # Flatpak version only
- install_version="flatpak"
- else
- # We shouldn't get here
- debug_print exit "Script error: Unable to detect Lutris version in install_game function. Aborting."
- fi
-
- # Run the appropriate installer
- if [ "$install_version" = "native" ]; then
- lutris --install "$install_script" &
- elif [ "$install_version" = "flatpak" ]; then
- flatpak run --file-forwarding net.lutris.Lutris --install @@ "$install_script" @@ &
- else
- # We shouldn't get here
- debug_print exit "Script error: Unknown condition for install_version in install_game() function. Aborting."
- fi
- message info "The installation will continue in Lutris"
- fi
-}
-
-# Display the LUG Wiki
-display_wiki() {
- # Display a message containing the URL
- message info "See the Wiki for our Quick-Start Guide, Manual Installation instructions,\nPerformance Tuning, and Common Issues and Solutions:\n\n$lug_wiki"
-}
-
-# Delete the shaders directory
-rm_shaders() {
- # Get/Set directory paths
- getdirs
- if [ "$?" -eq 1 ]; then
- # User cancelled and wants to return to the main menu, or error
- return 0
- fi
-
- # Loop through all possible shader directories
- for appdata_dir in "$shaders_dir"/*; do
- if [ -d "$appdata_dir/$shaders_subdir" ]; then
- # If a shaders directory is found, delete it
- if message question "The following directory will be deleted:\n\n$appdata_dir/$shaders_subdir\n\nDo you want to proceed?"; then
- debug_print continue "Deleting $appdata_dir/$shaders_subdir..."
- rm -r "$appdata_dir/$shaders_subdir"
- fi
- fi
- done
-
- message info "All shaders have been deleted"
-}
-
-# Delete DXVK cache
-rm_dxvkcache() {
- # Get/Set directory paths
- getdirs
- if [ "$?" -eq 1 ]; then
- # User cancelled and wants to return to the main menu
- # or there was an error
- return 0
- fi
-
- # Sanity check
- if [ ! -f "$dxvk_cache" ]; then
- message warning "Unable to find the DXVK cache file. There is nothing to delete!\n\n$dxvk_cache"
- return 0
- fi
-
- # Delete the cache file
- if message question "The following file will be deleted:\n\n$dxvk_cache\n\nDo you want to proceed?"; then
- debug_print continue "Deleting $dxvk_cache..."
- rm "$dxvk_cache"
- message info "Your DXVK cache has been deleted!"
- fi
-}
-
-# Show maintenance/troubleshooting options
-maintenance_menu() {
- # Loop the menu until the user selects quit
- looping_menu="true"
- while [ "$looping_menu" = "true" ]; do
- # Configure the menu
- menu_text_zenity="Game Maintenance and Troubleshooting\n\nYou may choose from the following options:"
- menu_text_terminal="Game Maintenance and Troubleshooting\n\nYou may choose from the following options:"
- menu_text_height="100"
-
- # Configure the menu options
- version_msg="Switch the Helper between LIVE and PTU (Currently: $live_or_ptu)"
- userdir_msg="Delete my Star Citizen USER folder and preserve my keybinds"
- shaders_msg="Delete my shaders (Do this after each game update)"
- vidcache_msg="Delete my DXVK cache"
- dirs_msg="Display Helper and Star Citizen directories"
- wiki_msg="Show the LUG Wiki"
- reset_msg="Reset Helper configs"
- quit_msg="Return to the main menu"
-
- # Set the options to be displayed in the menu
- menu_options=("$version_msg" "$userdir_msg" "$shaders_msg" "$vidcache_msg" "$dirs_msg" "$wiki_msg" "$reset_msg" "$quit_msg")
- # Set the corresponding functions to be called for each of the options
- menu_actions=("set_version" "rm_userdir" "rm_shaders" "rm_dxvkcache" "display_dirs" "display_wiki" "reset_helper" "menu_loop_done")
-
- # Calculate the total height the menu should be
- menu_height="$(($menu_option_height * ${#menu_options[@]} + $menu_text_height))"
-
- # Set the label for the cancel button
- cancel_label="Go Back"
-
- # Call the menu function. It will use the options as configured above
- menu
- done
-}
# Get a random Penguin's Star Citizen referral code
referral_randomizer() {
@@ -1905,30 +1939,6 @@ referral_randomizer() {
message info "Your random Penguin's referral code is:\n\n$random_code\n\nThank you!"
}
-# Toggle between the LIVE and PTU game directories for all Helper functions
-set_version() {
- if [ "$live_or_ptu" = "$live_dir" ]; then
- live_or_ptu="$ptu_dir"
- message info "The Helper will now target your Star Citizen PTU installation."
- elif [ "$live_or_ptu" = "$ptu_dir" ]; then
- live_or_ptu="$live_dir"
- message info "The Helper will now target your Star Citizen LIVE installation."
- else
- debug_print continue "Unexpected game version provided. Defaulting to the LIVE installation."
- live_or_ptu="$live_dir"
- fi
-}
-
-# Delete the helper's config directory
-reset_helper() {
- # Delete the shader directory
- if message question "All config files will be deleted from:\n\n$conf_dir/$conf_subdir\n\nDo you want to proceed?"; then
- debug_print continue "Deleting $conf_dir/$conf_subdir/*.conf..."
- rm "$conf_dir/$conf_subdir/"*.conf
- message info "The Helper has been reset!"
- fi
-}
-
# Get the latest release version of a repo. Expects "user/repo_name" as input
# Credits for this go to https://gist.github.com/lukechilds/a83e1d7127b78fef38c2914c4ececc3c
get_latest_release() {