| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #!/bin/bash
- # LinuxGSM fix.sh module
- # Author: Daniel Gibbs
- # Contributors: https://linuxgsm.com/contrib
- # Website: https://linuxgsm.com
- # Description: Overall module for managing fixes.
- # Runs modules that will fix an issue.
- moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
- # Messages that are displayed for some fixes.
- fn_fix_msg_start() {
- fn_print_dots "Applying ${fixname} fix: ${gamename}"
- fn_print_info "Applying ${fixname} fix: ${gamename}"
- fn_script_log_info "Applying ${fixname} fix: ${gamename}"
- }
- fn_fix_msg_start_nl() {
- fn_print_dots "Applying ${fixname} fix: ${gamename}"
- fn_print_info_nl "Applying ${fixname} fix: ${gamename}"
- fn_script_log_info "Applying ${fixname} fix: ${gamename}"
- }
- fn_fix_msg_end() {
- exirtcode=$?
- if [ "${exitcode}" -ne 0 ]; then
- fn_print_error_nl "Applying ${fixname} fix: ${gamename}"
- fn_script_log_error "Applying ${fixname} fix: ${gamename}"
- else
- fn_print_ok_nl "Applying ${fixname} fix: ${gamename}"
- fn_script_log_pass "Applying ${fixname} fix: ${gamename}"
- fi
- }
- fn_exists_fix() {
- local short="${1:?}"
- if [ "$(type -t "fix_${short}.sh")" == 'function' ]; then
- return 0
- else
- return 1
- fi
- }
- fn_apply_fix() {
- local phase_message="${1:?}"
- local short="${2:?}"
- if fn_exists_fix "${short}"; then
- "fix_${short}.sh"
- else
- fn_print_error_nl "${shortname} is marked to apply pre start fix but there is no fix registered"
- fi
- }
- apply_pre_start_fix=(arma3 armar ark av bf1942 bfv bt bo csgo cmw cod cod2 coduo dst hw ins ios kf nd nmrih onset pvr ro rust rw samp sdtd sfc sm sof2 squad st tf2 terraria ts3 mcb mohaa mta unt vh wurm xnt zmr)
- apply_post_install_fix=(av kf kf2 nd ro ut2k4 ut ut3)
- # validate registered fixes for safe development
- for fix in "${apply_pre_start_fix[@]}" "${apply_post_install_fix[@]}"; do
- if ! fn_exists_fix "${fix}"; then
- fn_print_fail_nl "fix_${fix}.sh is registered but doesn't exist. Typo or did you miss to modify core_modules.sh?"
- exitcode=1
- core_exit.sh
- fi
- done
- # Fixes that are run on start.
- if [ "${commandname}" != "INSTALL" ] && [ -z "${fixbypass}" ]; then
- if [ "${appid}" ]; then
- fix_steamcmd.sh
- fi
- if grep -qEe "(^|\s)${shortname}(\s|$)" <<< "${apply_pre_start_fix[@]}"; then
- fn_apply_fix "pre start" "${shortname}"
- fi
- fi
- # Fixes that are run on install only.
- if [ "${commandname}" == "INSTALL" ]; then
- if grep -qEe "(^|\s)${shortname}(\s|$)" <<< "${apply_post_install_fix[@]}"; then
- echo -e ""
- echo -e "${bold}${lightyellow}Applying Post-Install Fixes${default}"
- fn_messages_separator
- postinstall=1
- fn_apply_fix "post install" "${shortname}"
- fi
- fi
|