#!/usr/bin/with-contenv bash

DEFAULT_WATCH=( \
  /config/nginx/authelia-location.conf \
  /config/nginx/authelia-server.conf \
  /config/nginx/geoip2.conf \
  /config/nginx/ldap.conf \
  /config/nginx/nginx.conf \
  /config/nginx/proxy-confs \
  /config/nginx/proxy.conf \
  /config/nginx/site-confs \
  /config/nginx/ssl.conf \
)

echo "MOD Auto-reload: Watching the following files/folders for changes"
for i in ${DEFAULT_WATCH[@]}; do
  if [ -f "${i}" ] || [ -d "${i}" ]; then
    echo "${i}"
    ACTIVE_WATCH="${ACTIVE_WATCH} ${i}"
  fi
done
for i in $(echo "$WATCHLIST" | tr "|" " "); do
  if [ -f "${i}" ] || [ -d "${i}" ]; then
    echo "${i}"
    ACTIVE_WATCH="${ACTIVE_WATCH} ${i}"
  fi
done

function wait_for_changes {
  inotifywait -rq \
    --event modify,move,create,delete \
    ${ACTIVE_WATCH}
}

while wait_for_changes; do
  if /usr/sbin/nginx -c /config/nginx/nginx.conf -t; then
    echo "Changes to nginx config detected and the changes are valid, reloading nginx"
    /usr/sbin/nginx -c /config/nginx/nginx.conf -s reload
  else
    echo "Changes to nginx config detected but the changes are not valid, skipping nginx reload. Please fix your config."
  fi  
done
