mirror of
				https://ceregatti.org/git/daniel/dayzdockerserver.git
				synced 2025-11-03 23:03:35 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			1.8 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, or from project files.
 | 
						|
 | 
						|
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 i in cfgeventgroups.xml cfgenvironment.xml cfgeventspawns.xml cfggameplay.json cfgspawnabletypes.xml cfgweather.xml events.xml init.c types.xml
 | 
						|
do
 | 
						|
	FILE=$(echo ${i} | cut -d. -f1)
 | 
						|
	TYPE=$(echo ${i} | cut -d. -f2)
 | 
						|
	UP=${FILE^^}
 | 
						|
	VAL=${!UP}
 | 
						|
	DIR="${WORKSHOP_DIR}/${ID}"
 | 
						|
	OUT="${DIR}/${i}"
 | 
						|
	if echo ${VAL} | grep -qE "^http"
 | 
						|
	then
 | 
						|
		echo
 | 
						|
		echo "${i} is a URL, downloading to ${OUT}"
 | 
						|
		curl -so ${OUT} ${VAL}
 | 
						|
	elif echo ${VAL} | grep -qE "^local"
 | 
						|
	then
 | 
						|
		echo
 | 
						|
		echo "${i} comes from mod integration, copying to ${OUT}"
 | 
						|
		echo -n "  "
 | 
						|
		cp -v "${FILES}/mods/${ID}/${i}" "${OUT}"
 | 
						|
	elif echo ${VAL} | grep -qE "^\./"
 | 
						|
	then
 | 
						|
		echo
 | 
						|
		echo "${FILE} comes from the mod as ${VAL}, copying to ${OUT}"
 | 
						|
		echo -n "  "
 | 
						|
		cp -v "${DIR}/${VAL}" "${OUT}"
 | 
						|
	fi
 | 
						|
	if [ -f ${OUT} ]
 | 
						|
	then
 | 
						|
		if [[ ${TYPE} = "xml" ]]
 | 
						|
		then
 | 
						|
			xmllint --noout ${OUT} 2> /dev/null && (
 | 
						|
				echo -e "  ${green}${OUT} passes XML lint test!${default}"
 | 
						|
			) || (
 | 
						|
				echo -e "  ${yellow}${OUT} does not pass XML lint test!${default}"
 | 
						|
			)
 | 
						|
			# TODO - validate against schema - https://github.com/rvost/DayZ-Central-Economy-Schema/tree/master
 | 
						|
		elif [ "${TYPE}" == "json" ]
 | 
						|
		then
 | 
						|
			jq -e . ${OUT} > /dev/null || (
 | 
						|
				echo -e "  ${yellow}${OUT} does not pass JSON lint test!${default}"
 | 
						|
			) && (
 | 
						|
				echo -e "  ${green}${OUT} passes JSON lint test!${default}"
 | 
						|
			)
 | 
						|
		fi
 | 
						|
	fi
 | 
						|
done
 | 
						|
 | 
						|
if [ -f "${FILES}/mods/${ID}/start.sh" ]
 | 
						|
then
 | 
						|
	echo
 | 
						|
	echo "Copy ${FILES}/mods/${ID}/start.sh -> ${DIR}/start.sh"
 | 
						|
	cp "${FILES}/mods/${ID}/start.sh" "${DIR}/start.sh"
 | 
						|
	echo
 | 
						|
fi
 |