You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
1.9 KiB

4 months ago
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
MODE="${MODE:-local}" # local or ssh
if [[ "${1:-}" == "--ssh" ]]; then
MODE="ssh"
elif [[ "${1:-}" == "--local" ]]; then
MODE="local"
fi
ADDONS_DIR="${ADDONS_DIR:-../Games/ascension-wow/drive_c/Program Files/Ascension Launcher/resources/client/Interface/AddOns}"
MOUNT_DIR="${MOUNT_DIR:-$ROOT_DIR}"
LOCAL_BASE="${LOCAL_BASE:-$ROOT_DIR}"
SSH_USER="${SSH_USER:-$USER}"
SSH_HOST="${SSH_HOST:-sarvern.no}"
SSH_PORT="${SSH_PORT:-36}"
SSH_REMOTE_BASE="${SSH_REMOTE_BASE:-/home/TradeSkillMaster}"
ADDONS=(
"TradeSkillMaster"
"TradeSkillMaster_Accounting"
"TradeSkillMaster_AuctionDB"
"TradeSkillMaster_Auctioning"
"TradeSkillMaster_Crafting"
"TradeSkillMaster_Destroying"
"TradeSkillMaster_ItemTracker"
"TradeSkillMaster_Mailing"
"TradeSkillMaster_Shopping"
"TradeSkillMaster_Warehousing"
)
MOUNT_ITEMS=("scripts" "${ADDONS[@]}")
if [[ "$MODE" == "ssh" ]]; then
mkdir -p "$MOUNT_DIR"
for item in "${MOUNT_ITEMS[@]}"; do
target_path="${MOUNT_DIR}/${item}"
mkdir -p "$target_path"
if command -v mountpoint >/dev/null && mountpoint -q "$target_path"; then
echo "Already mounted: $target_path"
continue
fi
sshfs -p "$SSH_PORT" "$SSH_USER@$SSH_HOST:$SSH_REMOTE_BASE/$item" "$target_path"
echo "Mounted $item"
done
SOURCE_BASE="$MOUNT_DIR"
else
SOURCE_BASE="$LOCAL_BASE"
fi
if [[ ! -d "$ADDONS_DIR" ]]; then
echo "AddOns directory not found: $ADDONS_DIR" >&2
exit 1
fi
for addon in "${ADDONS[@]}"; do
live_path="${ADDONS_DIR}/${addon}"
src_path="${SOURCE_BASE}/${addon}"
if [[ ! -d "$src_path" ]]; then
echo "Source addon folder missing: $src_path" >&2
continue
fi
if [[ -L "$live_path" || -d "$live_path" ]]; then
rm -rf "$live_path"
fi
ln -s "$src_path" "$live_path"
echo "Linked ${addon}"
done