#!/usr/bin/env bash
# Usage: {script} RULE_FILENAME
# Update list of TLD

set -euo pipefail

declare -r IFS=$'\n'

declare -r LIST_URL="https://data.iana.org/TLD/tlds-alpha-by-domain.txt"
declare -r LIST_FILENAME=$(mktemp)

declare -r RULE_FILENAME=$(dirname "${BASH_SOURCE}")/../library/Rules/Tld.php
declare -r RULE_FILENAME_TEMPORARY=$(mktemp)

echo "- Downloading list"
curl --silent --location "${LIST_URL}" --output  "${LIST_FILENAME}"

echo "- Creating temporary file"
{
  sed --silent --regexp-extended "/^</,/^\{/p" "${RULE_FILENAME}"
  echo "    /**"
  echo "     * List extracted from ${LIST_URL}"
  echo "     */"
  echo "    private const TLD_LIST = ["
  grep --invert-match "^#" "${LIST_FILENAME}" |
      sed --regexp-extended "s,^,',; s/$/', /" |
      tr --delete "\n" |
      fold --width=72 --spaces |
      sed "s,^,        ,g; s, $,,g"
  echo
  echo "    ];"
  echo
  echo "    /**"
  echo "     * {@inheritDoc}"
  echo "     */"
  sed --silent --regexp-extended "/^    public function/,/^}/p" "${RULE_FILENAME}"
} > "${RULE_FILENAME_TEMPORARY}"

echo "- Updating content of '$(basename ${RULE_FILENAME})'"
mv "${RULE_FILENAME_TEMPORARY}" "${RULE_FILENAME}"

echo "Finished!"
