From 49079818f6677948a66f3cb3ae3a3d188413aab7 Mon Sep 17 00:00:00 2001 From: the Sane <3657071+the-sane@users.noreply.github.com> Date: Sat, 1 Jan 2022 15:52:53 -0500 Subject: [PATCH] Rearrange some functions --- lug-helper.sh | 370 +++++++++++++++++++++++++------------------------- 1 file changed, 184 insertions(+), 186 deletions(-) diff --git a/lug-helper.sh b/lug-helper.sh index 4fe8fb4..7b1f0cf 100755 --- a/lug-helper.sh +++ b/lug-helper.sh @@ -611,6 +611,17 @@ sanitize() { fi } +# Restart lutris +lutris_restart() { + if [ "$lutris_needs_restart" = "true" ] && [ "$(pgrep lutris)" ]; then + if message question "Lutris must be restarted to detect the changes.\nWould you like this Helper to restart it for you?"; then + debug_print continue "Restarting Lutris..." + pkill -SIGTERM lutris && nohup lutris /dev/null & + fi + fi + lutris_needs_restart="false" +} + #--------------------- begin preflight check functions -----------------------# #------------------------- begin mapcount functions --------------------------# @@ -766,85 +777,117 @@ avx_check() { fi } -#------------------------- end preflight check functions ---------------------# +# Check that the system is optimized for Star Citizen +preflight_check() { + # Initialize variables + unset preflight_pass + unset preflight_fail + unset preflight_action_funcs + unset preflight_actions + unset preflight_results + unset preflight_manual + unset preflight_followup + + # Call the optimization functions to perform the checks + wine_check + memory_check + avx_check + mapcount_check + filelimit_check -# Install Star Citizen using Lutris -install_game() { - # Check if Lutris is installed - if [ ! -x "$(command -v lutris)" ]; 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 - lutris --install "$install_script" & - message info "The installation will continue in Lutris" - 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 - - # Sanity check - if [ ! -d "$shaders_dir" ]; then - message warning "Shaders directory not found. There is nothing to delete!\n\n$shaders_dir" - return 0 - fi - - # Delete the shader directory - if message question "The following directory will be deleted:\n\n$shaders_dir\n\nDo you want to proceed?"; then - debug_print continue "Deleting $shaders_dir..." - rm -r "$shaders_dir" - message info "Your shaders have been deleted!" - fi -} - -# 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 -} - -# Restart lutris -lutris_restart() { - if [ "$lutris_needs_restart" = "true" ] && [ "$(pgrep lutris)" ]; then - if message question "Lutris must be restarted to detect the changes.\nWould you like this Helper to restart it for you?"; then - debug_print continue "Restarting Lutris..." - pkill -SIGTERM lutris && nohup lutris /dev/null & + # Populate info strings with the results and add formatting + if [ "${#preflight_pass[@]}" -gt 0 ]; then + preflight_pass_string="Passed Checks:" + for (( i=0; i<"${#preflight_pass[@]}"; i++ )); do + preflight_pass_string="$preflight_pass_string\n- ${preflight_pass[i]//\\n/\\n }" + done + # Add extra newlines if there are also failures to report + if [ "${#preflight_fail[@]}" -gt 0 ]; then + preflight_pass_string="$preflight_pass_string\n\n" + fi + fi + if [ "${#preflight_fail[@]}" -gt 0 ]; then + preflight_fail_string="Failed Checks:" + for (( i=0; i<"${#preflight_fail[@]}"; i++ )); do + if [ "$i" -eq 0 ]; then + preflight_fail_string="$preflight_fail_string\n- ${preflight_fail[i]//\\n/\\n }" + else + preflight_fail_string="$preflight_fail_string\n\n- ${preflight_fail[i]//\\n/\\n }" + fi + done + fi + for (( i=0; i<"${#preflight_manual[@]}"; i++ )); do + if [ "$i" -eq 0 ]; then + preflight_manual_string="${preflight_manual[i]}" + else + preflight_manual_string="$preflight_manual_string\n\n${preflight_manual[i]}" + fi + done + + # Display the results of the preflight check + if [ -z "$preflight_fail_string" ]; then + # Formatting + message_heading="Preflight Check Complete" + if [ "$use_zenity" -eq 1 ]; then + message_heading="$message_heading" + fi + + message info "$message_heading\n\nYour system is optimized for Star Citizen!\n\n$preflight_pass_string" + else + if [ -z "$preflight_action_funcs" ]; then + message warning "$preflight_pass_string$preflight_fail_string" + elif message question "$preflight_pass_string$preflight_fail_string\n\nWould you like configuration issues to be fixed for you?"; then + # Call functions to build fixes for any issues found + for (( i=0; i<"${#preflight_action_funcs[@]}"; i++ )); do + ${preflight_action_funcs[i]} + done + # Populate a string of actions to be executed + for (( i=0; i<"${#preflight_actions[@]}"; i++ )); do + if [ "$i" -eq 0 ]; then + preflight_actions_string="${preflight_actions[i]}" + else + preflight_actions_string="$preflight_actions_string; ${preflight_actions[i]}" + fi + done + + # Execute the actions set by the functions + if [ ! -z "$preflight_actions_string" ]; then + # Use pollkit's pkexec for gui with a fallback to sudo + if [ -x "$(command -v pkexec)" ]; then + pkexec sh -c "$preflight_actions_string" + else + sudo sh -c "$preflight_actions_string" + fi + fi + + # Call any followup functions + for (( i=0; i<"${#preflight_followup[@]}"; i++ )); do + ${preflight_followup[i]} + done + + # Populate the results string + for (( i=0; i<"${#preflight_results[@]}"; i++ )); do + if [ "$i" -eq 0 ]; then + preflight_results_string="${preflight_results[i]}" + else + preflight_results_string="$preflight_results_string\n\n${preflight_results[i]}" + fi + done + + # Display the results + message info "$preflight_results_string" + else + # User declined to automatically fix configuration issues + # Show manual configuration options + if [ ! -z "$preflight_manual_string" ]; then + message info "$preflight_manual_string" + fi fi fi - lutris_needs_restart="false" } +#------------------------- end preflight check functions ---------------------# + #------------------------- begin download functions ----------------------------# # Display post download message or instructions if needed @@ -1260,8 +1303,6 @@ download_manage() { lutris_restart } -#-------------------------- end download functions -----------------------------# - # Configure the download_manage function for runners runner_manage() { # Set some defaults @@ -1324,116 +1365,7 @@ dxvk_manage() { download_manage "dxvk" } -#-------------------------- end dxvk functions -----------------------------# - -# Check that the system is optimized for Star Citizen -preflight_check() { - # Initialize variables - unset preflight_pass - unset preflight_fail - unset preflight_action_funcs - unset preflight_actions - unset preflight_results - unset preflight_manual - unset preflight_followup - - # Call the optimization functions to perform the checks - wine_check - memory_check - avx_check - mapcount_check - filelimit_check - - # Populate info strings with the results and add formatting - if [ "${#preflight_pass[@]}" -gt 0 ]; then - preflight_pass_string="Passed Checks:" - for (( i=0; i<"${#preflight_pass[@]}"; i++ )); do - preflight_pass_string="$preflight_pass_string\n- ${preflight_pass[i]//\\n/\\n }" - done - # Add extra newlines if there are also failures to report - if [ "${#preflight_fail[@]}" -gt 0 ]; then - preflight_pass_string="$preflight_pass_string\n\n" - fi - fi - if [ "${#preflight_fail[@]}" -gt 0 ]; then - preflight_fail_string="Failed Checks:" - for (( i=0; i<"${#preflight_fail[@]}"; i++ )); do - if [ "$i" -eq 0 ]; then - preflight_fail_string="$preflight_fail_string\n- ${preflight_fail[i]//\\n/\\n }" - else - preflight_fail_string="$preflight_fail_string\n\n- ${preflight_fail[i]//\\n/\\n }" - fi - done - fi - for (( i=0; i<"${#preflight_manual[@]}"; i++ )); do - if [ "$i" -eq 0 ]; then - preflight_manual_string="${preflight_manual[i]}" - else - preflight_manual_string="$preflight_manual_string\n\n${preflight_manual[i]}" - fi - done - - # Display the results of the preflight check - if [ -z "$preflight_fail_string" ]; then - # Formatting - message_heading="Preflight Check Complete" - if [ "$use_zenity" -eq 1 ]; then - message_heading="$message_heading" - fi - - message info "$message_heading\n\nYour system is optimized for Star Citizen!\n\n$preflight_pass_string" - else - if [ -z "$preflight_action_funcs" ]; then - message warning "$preflight_pass_string$preflight_fail_string" - elif message question "$preflight_pass_string$preflight_fail_string\n\nWould you like configuration issues to be fixed for you?"; then - # Call functions to build fixes for any issues found - for (( i=0; i<"${#preflight_action_funcs[@]}"; i++ )); do - ${preflight_action_funcs[i]} - done - # Populate a string of actions to be executed - for (( i=0; i<"${#preflight_actions[@]}"; i++ )); do - if [ "$i" -eq 0 ]; then - preflight_actions_string="${preflight_actions[i]}" - else - preflight_actions_string="$preflight_actions_string; ${preflight_actions[i]}" - fi - done - - # Execute the actions set by the functions - if [ ! -z "$preflight_actions_string" ]; then - # Use pollkit's pkexec for gui with a fallback to sudo - if [ -x "$(command -v pkexec)" ]; then - pkexec sh -c "$preflight_actions_string" - else - sudo sh -c "$preflight_actions_string" - fi - fi - - # Call any followup functions - for (( i=0; i<"${#preflight_followup[@]}"; i++ )); do - ${preflight_followup[i]} - done - - # Populate the results string - for (( i=0; i<"${#preflight_results[@]}"; i++ )); do - if [ "$i" -eq 0 ]; then - preflight_results_string="${preflight_results[i]}" - else - preflight_results_string="$preflight_results_string\n\n${preflight_results[i]}" - fi - done - - # Display the results - message info "$preflight_results_string" - else - # User declined to automatically fix configuration issues - # Show manual configuration options - if [ ! -z "$preflight_manual_string" ]; then - message info "$preflight_manual_string" - fi - fi - fi -} +#-------------------------- end download functions -----------------------------# # Deploy Easy Anti-Cheat Workaround eac_workaround() { @@ -1482,6 +1414,72 @@ eac_workaround() { fi } +# Install Star Citizen using Lutris +install_game() { + # Check if Lutris is installed + if [ ! -x "$(command -v lutris)" ]; 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 + lutris --install "$install_script" & + message info "The installation will continue in Lutris" + 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 + + # Sanity check + if [ ! -d "$shaders_dir" ]; then + message warning "Shaders directory not found. There is nothing to delete!\n\n$shaders_dir" + return 0 + fi + + # Delete the shader directory + if message question "The following directory will be deleted:\n\n$shaders_dir\n\nDo you want to proceed?"; then + debug_print continue "Deleting $shaders_dir..." + rm -r "$shaders_dir" + message info "Your shaders have been deleted!" + fi +} + +# 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