#!/bin/bash
# Usage: $0 <firefox|firefox-esr|thunderbird>
# Copyright (c) 2019-2025 Danh Doan
# All rights reserved.
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.

pkg=${1:-firefox}
tmpldir="$pkg-i18n"
export LANG=C.UTF-8
export LC_ALL=C.UTF-8

case "${pkg}" in
firefox-esr) esr=esr ;;
firefox) : ;;
thunderbird) esr=esr ;;
*)
	echo "Usage: $0 <firefox|firefox-esr|thunderbird>" >&2
	exit 1
	;;
esac

tmpoldfile="$(mktemp --suffix=.old)"
tmpnewfile="$(mktemp --suffix=.new)"

xoldlangexpr="^_languages="

cd "$(xdistdir)/srcpkgs"
source "${tmpldir}/template"

xlistold() {
	for _lang in "${_languages[@]}"; do
		_locale="${_lang%% *}"
		[ $_locale ] && echo "$_locale"
	done |
	sort
}

xlink () {
	test -L "$tmpldir-$1" ||
	ln -sf "$tmpldir" "$tmpldir-$1"
}

xnewlang () {
	lang=$1
	padded=$(printf '%-12s' $lang)
	xoldexpr=$xoldlangexpr
	xoldlangexpr="'$lang \+\""
	grep -q "'$lang \+\"" "$tmpldir/template" && return 0
	sed -i "/$xoldexpr/a\\
	'$padded\"Unknown\"'
	/checksum=/a\\
 badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadb" \
	"$tmpldir/template"
}

xprocessnew() {
	while read -r lang; do
		printf '%s\n' $lang >&3
		xlink $lang
		xnewlang $lang
	done 3>&1 1>&2 |
	sort
}

xcleanlang() {
	while read -r lang; do
		padded=$(printf '%-7s' $lang)
		sed -i "/'$padded\"/d" $tmpldir/template
		unlink "$tmpldir-$lang" || true
	done
}

xlistold > "$tmpoldfile"

echo curl "https://ftp.mozilla.org/pub/${pkg%-esr}/releases/$version$esr/linux-x86_64/xpi/" >&2
curl "https://ftp.mozilla.org/pub/${pkg%-esr}/releases/$version$esr/linux-x86_64/xpi/" |
	grep -o 'xpi/[a-z]\+\(-[a-zA-Z]\+\)\?' |
	cut -d/ -f2 |
	xprocessnew >"$tmpnewfile"

comm -13 "$tmpnewfile" "$tmpoldfile" |
	xcleanlang

rm -rf $tmpoldfile $tmpnewfile
