#!/bin/bash
set -eu

cd "${0%/*}"

langdirs=(app/src/main/res/values-?? app/src/main/res/values-??-r??)
readarray -td '' langdirs < <(printf '%s\0' "${langdirs[@]}" | sort -z)

count_strings() {
  code=$1
  [[ -n "$code" ]] && code="-$code"
  grep -h -c "</string>" "app/src/main/res/values$code/"{strings,preference}.xml "libraries/humla/src/main/res/values$code/strings.xml" \
    | awk '{s+=$1} END {print s}'
}

en=$(count_strings "")

declare -a langs
declare -a excluded
for lang in "${langdirs[@]}"; do
  lang=${lang##*/}
  lang=${lang#values-}
  percent=$(( $(count_strings "$lang") * 100 / en ))
  if (( percent < 40 )); then
    excluded+=("$lang($percent%)")
  elif (( percent < 99 )); then
    langs+=("$lang($percent%)")
  else
    langs+=("$lang")
  fi
done
printf "included languages: %s\n" "${langs[*]}"
printf "excluded languages: %s\n" "${excluded[*]}"

destf=app/src/main/res/xml/local_config.xml
cat >"$destf" <<-EOF
<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
EOF
for lang in en-US "${langs[@]}"; do
  lang="${lang%%(*}"
  printf >>"$destf" '    <locale android:name="%s" />\n' "$lang"
done
printf >>"$destf" "</locale-config>\n"
printf "wrote %s\n" "$destf"

new='resourceConfigurations += ["en"'
for lang in "${langs[@]}"; do
  lang="${lang%%(*}"
  new=$(printf '%s, "%s"' "$new" "$lang")
done
new="$new]"
sed -i "s/resourceConfigurations .*/$new/" app/build.gradle
printf "updated app/build.gradle\n"
