Files
eqclient-conf/ui/install.sh
T

67 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# Rebuild custom UI files using patches
# install.sh — apply patches to uifiles/isuldor/
# install.sh --update — regenerate *.diff from uifiles/isuldor/ (CRLF-normalized)
#
# Set EQ_GAME_PATH to your install root, or rely on auto-detection.
set -euo pipefail
UI_NAME=isuldor
SCRIPT_PATH=$(dirname "${0}")
# shellcheck source=eq-path.sh
source "${SCRIPT_PATH}/eq-path.sh"
GAME_PATH=$(resolve_game_path) || exit 1
UI_FOLDER="${GAME_PATH}/uifiles/${UI_NAME}"
DEFAULT_UI="${GAME_PATH}/uifiles/default"
# Stock uifiles/default/*.xml use CRLF; LF-only isuldor files produce whole-file diffs.
crlf_temp() {
local src=$1
local dest=$2
sed 's/$/\r/' "${src}" > "${dest}"
}
needs_crlf_diff() {
local default_xml=$1
file "${default_xml}" 2>/dev/null | grep -q CRLF
}
# Regenerate patch set from built skin
if [[ "${1:-}" == "-u" || "${1:-}" == "--update" ]]; then
echo "Updating patch set from ${UI_FOLDER}..."
UI_FILES=( $( find "${UI_FOLDER}" -name '*.xml' -exec basename {} .xml \; ))
for UI_FILE in "${UI_FILES[@]}"; do
default_xml="${DEFAULT_UI}/${UI_FILE}.xml"
isuldor_xml="${UI_FOLDER}/${UI_FILE}.xml"
out_diff="${SCRIPT_PATH}/${UI_FILE}.diff"
if needs_crlf_diff "${default_xml}"; then
crlf_temp "${isuldor_xml}" "${out_diff}.isuldor.crlf"
diff -u "${default_xml}" "${out_diff}.isuldor.crlf" > "${out_diff}"
rm -f "${out_diff}.isuldor.crlf"
else
diff -u "${default_xml}" "${isuldor_xml}" > "${out_diff}"
fi
echo " ${UI_FILE}.diff"
done
echo "Run: bash ui/verify.sh --record"
exit 0
fi
mkdir -vp "${UI_FOLDER}"
cp "${SCRIPT_PATH}"/*.tga "${UI_FOLDER}/"
UI_FILES=( $( find "${SCRIPT_PATH}" -name '*.diff' -exec basename {} .diff \; ))
for UI_FILE in "${UI_FILES[@]}"; do
if ! patch --ignore-whitespace --fuzz 3 -o "${UI_FOLDER}/${UI_FILE}.xml" \
"${DEFAULT_UI}/${UI_FILE}.xml" < "${SCRIPT_PATH}/${UI_FILE}.diff"; then
echo "Error: patch failed for ${UI_FILE}" >&2
exit 1
fi
done
echo "Installed ${#UI_FILES[@]} files to ${UI_FOLDER}"
echo "Set UISkin=${UI_NAME} in your character UI INI, then: bash ui/verify.sh --record"