Overhaul scripts for 2026 refresh
This commit is contained in:
Executable
+66
@@ -0,0 +1,66 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user