mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 20:39:18 -08:00
83 lines
2.6 KiB
Bash
83 lines
2.6 KiB
Bash
#!/usr/bin/env bash
|
|
set -eu
|
|
|
|
ARG_GAME_SRC=$1
|
|
ARG_GAME_VERSION=$2
|
|
ARG_SHARED_DATA=$3
|
|
ARG_USER_DATA=$4
|
|
shift 4
|
|
|
|
if ! [[ -e "$ARG_GAME_SRC/$ARG_GAME_VERSION/Beat Saber.exe" ]]; then
|
|
echo unexpected game src >&2
|
|
exit 1
|
|
fi
|
|
|
|
ln -srf "$ARG_GAME_SRC/$ARG_GAME_VERSION/"*.{exe,dll} ./
|
|
ln -srf "$ARG_GAME_SRC/$ARG_GAME_VERSION/"{MonoBleedingEdge,Plugins} ./
|
|
rm "Beat Saber.exe"
|
|
cp "$ARG_GAME_SRC/$ARG_GAME_VERSION/Beat Saber.exe" ./
|
|
chmod 0775 "Beat Saber.exe"
|
|
|
|
BSDATA="Beat Saber_Data"
|
|
mkdir -pm2775 "$BSDATA"
|
|
ln -srf "$ARG_GAME_SRC/$ARG_GAME_VERSION/$BSDATA/"* "$BSDATA/" || true
|
|
ln -srf "$ARG_SHARED_DATA/CustomLevels" "$BSDATA/"
|
|
rm -f "$BSDATA/Managed"
|
|
|
|
mkdir -pm2775 UserData
|
|
|
|
ln -srf "$ARG_SHARED_DATA/"{CustomAvatars,CustomNotes,CustomPlatforms,CustomSabers,CustomWalls,Playlists} ./
|
|
for shareddir in DynamicOpenVR IPA Libs Logs Plugins "$BSDATA/Managed" UserData/SongCore; do
|
|
shareddirsrc="$ARG_SHARED_DATA/$ARG_GAME_VERSION/$shareddir"
|
|
if [[ ! -e $shareddirsrc ]]; then
|
|
mkdir -pm2775 "$shareddirsrc"
|
|
if [[ $shareddir = */Managed ]]; then
|
|
cp "$ARG_GAME_SRC/$ARG_GAME_VERSION/$BSDATA/Managed/"* "$shareddirsrc/" || true
|
|
chmod 0775 "$shareddirsrc/"*.dll || true
|
|
fi
|
|
fi
|
|
ln -srf "$shareddirsrc" "./$(dirname "$shareddir")"
|
|
done
|
|
for sharedfile in IPA.exe IPA.exe.config IPA.runtimeconfig.json winhttp.dll; do
|
|
sharedfilesrc="$ARG_SHARED_DATA/$ARG_GAME_VERSION/$sharedfile"
|
|
if [[ ! -e "$sharedfilesrc" ]]; then
|
|
mkdir -pm2775 "$(dirname "$sharedfilesrc")"
|
|
if [[ $sharedfile = *.json ]]; then
|
|
echo '{}' > "$sharedfilesrc"
|
|
else
|
|
touch "$sharedfilesrc"
|
|
fi
|
|
chmod 0775 "$sharedfilesrc" || true
|
|
fi
|
|
ln -f "$sharedfilesrc" ./
|
|
done
|
|
|
|
for sharedfile in "Beat Saber IPA.json"; do
|
|
sharedfilesrc="$ARG_SHARED_DATA/$ARG_GAME_VERSION/UserData/$sharedfile"
|
|
if [[ ! -e "$sharedfilesrc" ]]; then
|
|
mkdir -pm2775 "$(dirname "$sharedfilesrc")"
|
|
if [[ $sharedfile = *.json ]]; then
|
|
echo '{}' > "$sharedfilesrc"
|
|
else
|
|
touch "$sharedfilesrc"
|
|
fi
|
|
fi
|
|
ln -f "$sharedfilesrc" "UserData/$(dirname "$sharedfile")"
|
|
done
|
|
ln -f "$ARG_SHARED_DATA/UserData/"*.{json,ini,proto,etag} UserData/
|
|
ln -srf "$ARG_SHARED_DATA/UserData/"{ScoreSaber,Chroma,Nya,SongRankedBadge,HitScoreVisualizer}/ UserData/
|
|
|
|
SFDATA="UserData/Saber Factory"
|
|
mkdir -pm2775 "$SFDATA"
|
|
ln -srf "$ARG_SHARED_DATA/$SFDATA/"*/ "$SFDATA/"
|
|
ln -srf "$ARG_USER_DATA/$SFDATA/"*/ "$SFDATA/"
|
|
ln -f "$ARG_USER_DATA/$SFDATA/"*.json "$SFDATA/"
|
|
|
|
for userdir in Camera2 DrinkWater Enhancements; do
|
|
userdirsrc="$ARG_USER_DATA/UserData/$userdir"
|
|
if [[ ! -e $userdirsrc ]]; then
|
|
mkdir -pm3775 "$userdirsrc"
|
|
fi
|
|
ln -srf "$userdirsrc" UserData/
|
|
done
|
|
ln -f "$ARG_USER_DATA/UserData/"*.{json,ini,dat} UserData/
|