#!/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
	echo "No xml.env exists for the ID ${ID}."
	exit 0
fi

source ${FILES}/mods/${ID}/xml.env

# Iterate over the file names we can handle
for var in CFGENVIRONMENT 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} passes XML lint test!${default}"
    ) || (
      echo -e "${yellow}${OUT} does not pass XML lint test!${default}"
    )
  fi
done
