mirror of
https://github.com/Respect/Validation.git
synced 2024-06-04 14:52:17 +02:00
e0fbed32c9
Also updates the script that updates the currency codes. Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
46 lines
1.3 KiB
Bash
Executable file
46 lines
1.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Usage: {script} TLD_FILENAME
|
|
# Update list of TLD
|
|
|
|
set -euo pipefail
|
|
|
|
declare -r IFS=$'\n'
|
|
declare -r URL="https://www.currency-iso.org/dam/downloads/lists/list_one.xml"
|
|
declare -r RULE="${1}"
|
|
declare -r TEMPORARY_XML=$(mktemp)
|
|
|
|
download_list()
|
|
{
|
|
echo "Downloading list from '${URL}'"
|
|
curl --silent --location "${1}" --output "${2}"
|
|
}
|
|
|
|
update_currency_codes()
|
|
{
|
|
local -r filename_rule="${1}"
|
|
local -r filename_xml="${2}"
|
|
local -r number_of_items=$(grep "<CcyNtry>" "${filename_xml}" | wc --lines)
|
|
local -r temporary_rule=$(mktemp)
|
|
|
|
echo "Updating list in '${filename_rule}'"
|
|
{
|
|
sed -n "/^</,/ return \[/p" "${filename_rule}"
|
|
for index in $(seq 1 ${number_of_items}); do
|
|
local name=$(xml sel --template --value-of "//CcyNtry[${index}]/CcyNm" < "${filename_xml}")
|
|
local code=$(xml sel --template --value-of "//CcyNtry[${index}]/Ccy" < "${filename_xml}")
|
|
|
|
if [[ -z "${code}" ]]; then
|
|
continue
|
|
fi
|
|
|
|
echo " '${code}', //" $(sed --regexp-extended 's, +$,,' <<< "${name}")
|
|
done | sort --unique
|
|
sed --silent '/^ \]/,/^}/p' "${filename_rule}"
|
|
} > "${temporary_rule}"
|
|
|
|
mv "${temporary_rule}" "${filename_rule}"
|
|
}
|
|
|
|
download_list "${URL}" "${TEMPORARY_XML}"
|
|
update_currency_codes "${RULE}" "${TEMPORARY_XML}"
|