58 lines
1.1 KiB
Bash
58 lines
1.1 KiB
Bash
STEAM="${HOME}/.local/share/Steam/steamapps/common"
|
|
GAMES="${HOME}/Games"
|
|
|
|
EXCLUDE=(
|
|
"Proton - Experimental"
|
|
"SteamLinuxRuntime_sniper"
|
|
"Steamworks Shared"
|
|
"Steam.dll"
|
|
)
|
|
|
|
is_excluded() {
|
|
local dir=$1
|
|
for exclude in "${EXCLUDE[@]}"; do
|
|
if [[ "${dir}" == "${exclude}" ]]; then
|
|
return 0
|
|
fi
|
|
done
|
|
return 1
|
|
}
|
|
|
|
for game in "${STEAM}"/*/; do
|
|
name=$(basename "${game}")
|
|
|
|
if is_excluded "${name}"; then
|
|
echo "Excluding ${name} from symlink creation."
|
|
continue
|
|
fi
|
|
|
|
if [[ -L "${GAMES}/${name}" ]]; then
|
|
continue
|
|
fi
|
|
|
|
if [[ -d "${GAMES}/${name}" || -f "${GAMES}/${name}" ]]; then
|
|
>&2 echo "Error: ${name} is already a regular directory or file."
|
|
continue
|
|
fi
|
|
|
|
echo "Creating symlink for ${name}..."
|
|
ln -s "${game}" "${GAMES}/${name}"
|
|
done
|
|
|
|
for link in "${GAMES}"/*; do
|
|
target=$(readlink "${link}")
|
|
|
|
if [[ ! "${target}" == "${STEAM}/"* ]]; then
|
|
continue
|
|
fi
|
|
|
|
name=$(basename "${target}")
|
|
|
|
if [[ -e "${target}" ]] && ! is_excluded "${name}"; then
|
|
continue
|
|
fi
|
|
|
|
echo "Removing symlink ${link}..."
|
|
rm "${link}"
|
|
done
|