#!/usr/bin/env bash
# Usage: {script}
# Update list of language codes (ISO-639-2)

set -euo pipefail

declare -r LIST_URL="http://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt"
declare -r LIST_FILENAME=$(mktemp)

declare -r RULE_FILENAME=$(dirname "${BASH_SOURCE}")/../library/Rules/LanguageCode.php
declare -r RULE_FILENAME_TEMPORARY=$(mktemp)

echo "- Downloading list from"
curl --silent --location "${LIST_URL}" --output "${LIST_FILENAME}"


echo "- Creating temporary file"
{
  sed --silent '/^</,/    public const LANGUAGE_CODES/p' "${RULE_FILENAME}"
  echo "        // phpcs:disable Squiz.PHP.CommentedOutCode.Found"
  while IFS='|' read alpha_3 _ alpha_2 name _; do
    echo "        ['${alpha_2}', '$(tr -cd '[a-z]' <<< ${alpha_3})'], // ${name}"
  done < "${LIST_FILENAME}"
  echo "        // phpcs:enable Squiz.PHP.CommentedOutCode.Found"
  sed --silent '/^    ];/,/^}/p' "${RULE_FILENAME}"
} > "${RULE_FILENAME_TEMPORARY}"

echo "- Updating content of '$(basename ${RULE_FILENAME})'"
mv "${RULE_FILENAME_TEMPORARY}" "${RULE_FILENAME}"
