respect-validation/bin/update-tld
Henrique Moody 3be622a9fa
Configure GitHub workflow to update top-level domains
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-26 19:19:25 +02:00

44 lines
1.2 KiB
Bash
Executable file

#!/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 " * $(grep "^#" "${LIST_FILENAME}" | sed "s,# ,,")"
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!"