MINGW_INSTALL=clangarm64
MINGW_XML_CATALOG=${MINGW_INSTALL}/etc/xml
# export MSYS2_ARG_CONV_EXCL="-//OASIS"
_vers_4x=(4.{2..5})

post_install() {
  if [ -e ${MINGW_XML_CATALOG}/catalog.preserve ]; then
    mv ${MINGW_XML_CATALOG}/catalog.preserve ${MINGW_XML_CATALOG}/catalog
  elif [ ! -e ${MINGW_INSTALL}/etc/xml/catalog ]; then
    ${MINGW_INSTALL}/bin/xmlcatalog --noout --create ${MINGW_XML_CATALOG}/catalog
  fi
  ${MINGW_INSTALL}/bin/xmlcatalog --noout --add "delegatePublic" \
    "-//OASIS//ENTITIES DocBook XML" \
    "./docbook-xml" \
    ${MINGW_XML_CATALOG}/catalog
  ${MINGW_INSTALL}/bin/xmlcatalog --noout --add "delegatePublic" \
    "-//OASIS//DTD DocBook XML" \
    "./docbook-xml" \
    ${MINGW_XML_CATALOG}/catalog
  ${MINGW_INSTALL}/bin/xmlcatalog --noout --add "delegateSystem" \
    "http://www.oasis-open.org/docbook/" \
    "./docbook-xml" \
    ${MINGW_XML_CATALOG}/catalog
  ${MINGW_INSTALL}/bin/xmlcatalog --noout --add "delegateURI" \
    "http://www.oasis-open.org/docbook/" \
    "./docbook-xml" \
    ${MINGW_XML_CATALOG}/catalog
}

# arg 1:  the new package version
# arg 2:  the old package version
pre_upgrade() {
  if [ $(vercmp $2 4.5) -lt 0 ]; then
    ${MINGW_INSTALL}/bin/xmlcatalog --del "${MINGW_XML_CATALOG}/docbook" ${MINGW_XML_CATALOG}/catalog > ${MINGW_XML_CATALOG}/catalog.preserve
    echo ":: docbook5 is now in docbook5-xml"
  fi
}

post_upgrade() {
  if [ $(vercmp $2 4.5) -ge 0 ]; then
    post_remove
  fi
  post_install
}

post_remove() {
  ${MINGW_INSTALL}/bin/xmlcatalog --noout --del ./docbook-xml ${MINGW_XML_CATALOG}/catalog
}
