Save directories to config files

This commit is contained in:
the-sane 2020-08-10 16:03:11 -04:00 committed by GitHub
parent 5ee3f967bd
commit 4772265c99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17,24 +17,25 @@
# whenever there is a major version update. It will back up your # whenever there is a major version update. It will back up your
# exported keybinds, delete your USER folder, then restore your keybinds. # exported keybinds, delete your USER folder, then restore your keybinds.
# #
# Edit the default paths below to match your configuration.
#
#
# To export your keybinds from within the game, go to # To export your keybinds from within the game, go to
# Options->Keybindings->Control Profiles->Save Control Settings # Options->Keybindings->Control Profiles->Save Control Settings
# Give it a name and save it in the backup location you specify below.
# #
############################################################################ ############################################################################
# Change these paths wine_conf="winedir.conf"
i_changed_these="true" # Change this to true once you make your edits game_conf="gamedir.conf"
prefix="$HOME/.wine" backup_conf="backupdir.conf"
path="$prefix/drive_c/Program Files/Roberts Space Industries/Star Citizen/LIVE"
backups="$HOME/Documents/Star Citizen"
# You shouldn't need to change these # Use the XDG config directory if defined
user="$path/USER" if [ -z "$XDG_CONFIG_HOME" ]; then
mappings="$user/Controls/Mappings" conf_dir="$HOME/.config"
echo "DEBUG: XDG DIR NOT FOUND"
else
conf_dir="$XDG_CONFIG_HOME"
echo "DEBUG: XDG DIR FOUND"
fi
conf_subdir="starcitizen-lug"
############################################################################ ############################################################################
############################################################################ ############################################################################
@ -109,76 +110,134 @@ message() {
fi fi
} }
# Prompt the user for the paths to their wine prefix, game directory, and a backup directory # Get paths to the user's wine prefix, game directory, and a backup directory
getdirs() { getdirs() {
message 1 "On the next screens, please select your WINE prefix,\nyour Star Citizen installation's LIVE directory,\nand a backup directory for your keybinds." # Sanity checks
if [ ! -d "$conf_dir" ]; then
message 2 "Invalid config path:\n$conf_dir\nAborting."
exit 0
fi
if [ ! -d "$conf_dir/$conf_subdir" ]; then
mkdir "$conf_dir/$conf_subdir"
fi
# Check if the config files already exist
if [ -f "$conf_dir/$conf_subdir/$wine_conf" ]; then
found_wine_conf=1
wine_prefix="$(cat $conf_dir/$conf_subdir/$wine_conf")"
fi
if [ -f "$conf_dir/$conf_subdir/$game_conf" ]; then
found_game_conf=1
game_path="$(cat $conf_dir/$conf_subdir/$game_conf")"
fi
if [ -f "$conf_dir/$conf_subdir/$backup_conf" ]; then
found_backup_conf=1
backup_path="$(cat $conf_dir/$conf_subdir/$backup_conf")"
fi
if [ -z "$found_wine_config" ] || [ -z "$found_game_conf" ] || [ -z "$found_backup_conf" ]; then
message 1 "You will now be asked to provide some directories needed by this script.\nThey will be saved for later use in:\n$conf_dir/$conf_subdir/"
if [ "$has_zen" -eq 1 ]; then if [ "$has_zen" -eq 1 ]; then
prefix="$(zenity --file-selection --directory --title="Select your WINE prefix directory" --filename="$HOME/")" # Get the wine prefix directory
if [ -z "$found_wine_conf" ]; then
wine_prefix="$(zenity --file-selection --directory --title="Select your WINE prefix directory" --filename="$HOME/")"
if [ "$?" -eq -1 ]; then if [ "$?" -eq -1 ]; then
message 2 "An unexpected error has occurred." message 2 "An unexpected error has occurred."
fi fi
path="$(zenity --file-selection --directory --title="Select your Star Citizen LIVE directory" --filename="$prefix/")" fi
# Get the game path
if [ -z "$found_game_conf" ]; then
while true; do
game_path="$(zenity --file-selection --directory --title="Select your Star Citizen LIVE directory" --filename="$prefix/")"
if [ "$?" -eq -1 ]; then if [ "$?" -eq -1 ]; then
message 2 "An unexpected error has occurred." message 2 "An unexpected error has occurred."
fi fi
backups="$(zenity --file-selection --directory --title="Select a backup directory for your keybinds" --filename="$HOME/")"
if [ "$(basename $game_path)" != "LIVE" ]; then
message 2 "You must select your LIVE directory."
else
break
fi
done
fi
# Get the backup directory
if [ -z "$found_backup_conf" ]; then
backup_path="$(zenity --file-selection --directory --title="Select a backup directory for your keybinds" --filename="$HOME/")"
if [ "$?" -eq -1 ]; then if [ "$?" -eq -1 ]; then
message 2 "An unexpected error has occurred." message 2 "An unexpected error has occurred."
fi fi
fi
else else
clear clear
# Get the wine prefix directory
if [ -z "$found_wine_conf" ]; then
echo -e "Enter the full path to your WINE prefix directory" echo -e "Enter the full path to your WINE prefix directory"
echo -e "ie. /home/USER/.wine/" echo -e "ie. /home/USER/.wine/"
while read -rp ": " prefix; do while read -rp ": " wine_prefix; do
if [ ! -d "$prefix" ]; then if [ ! -d "$wine_prefix" ]; then
echo -e "That directory is invalid or does not exist. Please try again.\n" echo -e "That directory is invalid or does not exist. Please try again.\n"
else else
break break
fi fi
done done
# Get the game path
if [ -z "$found_game_conf" ]; then
echo -e "\nEnter the full path to your Star Citizen installation LIVE directory" echo -e "\nEnter the full path to your Star Citizen installation LIVE directory"
echo -e "ie. /home/USER/.wine/drive_c/Program Files/Roberts Space Industries/Star Citizen/LIVE/" echo -e "ie. /home/USER/.wine/drive_c/Program Files/Roberts Space Industries/Star Citizen/LIVE/"
while read -rp ": " path; do while read -rp ": " game_path; do
if [ ! -d "$path" ]; then if [ ! -d "$game_path" ]; then
echo -e "That directory is invalid or does not exist. Please try again.\n" echo -e "That directory is invalid or does not exist. Please try again.\n"
elif [ "$(basename $game_path)" != "LIVE" ]; then
echo -e "You must select your LIVE directory."
else else
break break
fi fi
done done
fi
# Get the backup directory
if [ -z "$found_backup_conf" ]; then
echo -e "\nEnter the full path to a backup directory for your keybinds" echo -e "\nEnter the full path to a backup directory for your keybinds"
echo -e "ie. /home/USER/backups/" echo -e "ie. /home/USER/backups/"
while read -rp ": " backups; do while read -rp ": " backup_path; do
if [ ! -d "$backups" ]; then if [ ! -d "$backup_path" ]; then
echo -e "That directory is invalid or does not exist. Please try again.\n" echo -e "That directory is invalid or does not exist. Please try again.\n"
else else
break break
fi fi
done done
fi fi
fi
# Save the paths for later use
echo "$wine_prefix" > "$conf_dir/$conf_subdir/$wine_conf"
echo "$game_path" > "$conf_dir/$conf_subdir/$game_conf"
echo "$backup_path" > "$conf_dir/$conf_subdir/$backup_conf"
fi
# Set some remaining directory paths
user_dir="$game_path/USER"
mappings_dir="$user_dir/Controls/Mappings"
} }
# Save exported keybinds, wipe the USER directory, and restore keybinds # Save exported keybinds, wipe the USER directory, and restore keybinds
sanitize() { sanitize() {
clear clear
# Display a warning to modify the default variables
if [ "$i_changed_these" = "false" ]; then
message 2 "The file picker is not implemented yet.\n\nPlease edit this script to change the default\nStar Citizen paths to match your configuration.\n"
else
# Sanity checks
if [ ! -d "$prefix" ]; then
message 2 "Invalid path:\n$prefix\nAborting."
elif [ ! -d "$path" ]; then
message 2 "Invalid path:\n$path\nAborting."
else
# Prompt user to back up the current keybinds in the game # Prompt user to back up the current keybinds in the game
message 1 "Before proceeding, please be sure you have\nmade a backup of your Star Citizen keybinds!\nTo do this from within the game, go to\nOptions->Keybindings->Control Profiles->Save Control Settings\nGive it a name and save it to the backup location\nthat you specified in this script's variables." message 1 "Before proceeding, please be sure you have\nexported your Star Citizen keybinds from within the game!\n\nTo do this, launch the game and go to:\nOptions->Keybindings->Control Profiles->Save Control Settings"
# Get/Set directory paths
getdirs
# Check for exported keybind files # Check for exported keybind files
exported=0 # Default to none found exported=0 # Default to none found
if [ ! -d "$mappings" ] || [ -z "$(ls -A $mappings)" ]; then if [ ! -d "$mappings_dir" ] || [ -z "$(ls -A $mappings_dir)" ]; then
message 1 "Warning: No exported keybindings found. Keybinds will not be backed up!" message 1 "Warning: No exported keybindings found. Keybinds will not be backed up!"
exported=0 exported=0
else else
@ -188,34 +247,24 @@ sanitize() {
# Back up keybinds # Back up keybinds
if [ "$exported" -eq 1 ]; then if [ "$exported" -eq 1 ]; then
echo "Backing up all saved keybinds..." echo "Backing up all saved keybinds..."
mkdir -p "$backups" && cp -r "$mappings/." "$backups/" mkdir -p "$backup_path" && cp -r "$mappings_dir/." "$backup_path/"
echo -e "Done.\n" echo -e "Done.\n"
fi fi
# Wipe the user directory # Wipe the user directory
echo "Wiping USER directory..." echo "Wiping USER directory..."
rm -rf "$user" rm -rf "$user_dir"
echo -e "Done.\n" echo -e "Done.\n"
# Restore custom keybinds # Restore custom keybinds
if [ "$exported" -eq 1 ]; then if [ "$exported" -eq 1 ]; then
echo "Restoring keybinds..." echo "Restoring keybinds..."
mkdir -p "$mappings" && cp -r "$backups/." "$mappings/" mkdir -p "$mappings_dir" && cp -r "$backup_path/." "$mappings_dir/"
echo -e "Done.\n" echo -e "Done.\n"
message 1 "\nTo re-import your keybinds, select it in-game from the list:\nOptions->Keybindings->Control Profiles\n" message 1 "\nTo re-import your keybinds, select it in-game from the list:\nOptions->Keybindings->Control Profiles\n"
fi fi
message 1 "Your USER directory has been cleaned up!"
# Special request: Uncomment to wash Snagletooth's car
#echo -e "Washing the car...\n"
#echo "Working at the car wash, yeah!"
#echo "Come on and sing it with me, car wash!"
#echo -e "Sing it with the feeling now, car wash yeah!\n"
echo "And we're done here. Have fun!"
fi
fi
} }
check_map_count() { check_map_count() {