dayzdockerserver/files/bin/xml.sh
2023-09-08 11:51:01 -07:00

43 lines
1.1 KiB
Bash
Executable file

#!/usr/bin/env bash
# A generic script that retrieves XML files from mods, either upstream in remote endpoints, or
# locally from the downloaded mod directory
set -eE
ID=${1}
if ! [ -f ${FILES}/mods/${ID}/xml.env ]
then
exit 0
fi
source ${FILES}/mods/${ID}/xml.env
# Iterate over the file names we can handle
for var in CFGEVENTSPAWNS CFGSPAWNABLETYPES EVENTS TYPES
do
DIR="${WORKSHOP_DIR}/${ID}"
OUT="${DIR}/${var,,}.xml"
if echo ${!var} | grep -qE "^http"
then
echo "${var} is a URL, downloading to ${OUT}"
curl -so ${OUT} ${!var}
elif echo ${!var} | grep -qE "^local"
then
echo "${var} comes from mod integrations, copying to ${OUT}"
cp -v "${FILES}/mods/${ID}/${var,,}.xml" "${OUT}"
elif echo ${!var} | grep -qE "^\./"
then
echo "${var} comes from the mod as ${!var}, copying to ${OUT}"
cp -v "${DIR}/${!var}" "${OUT}"
fi
if [ -f ${OUT} ]
then
xmllint --noout ${OUT} 2> /dev/null && (
echo -e "${green}${OUT}.xml passes XML lint test!${default}"
) || (
echo -e "${yellow}${OUT}.xml does not pass XML lint test!${default}"
)
fi
done