#!/usr/bin/env bash

# Get script directory and determine app name
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
APPNAME="$(basename "$PROJECT_DIR")"

echodo() {
  echo "${@}"
  ${@}
}

# Prepare transifex
if [ ! -s  .tx/config ]; then
   mkdir -p .tx
   cat <<EOF > .tx/config
[main]
host = https://www.transifex.com

[o:anticapitalista:p:antix-development:r:$APPNAME]
file_filter = ./${APPNAME}_<lang>.ts
source_file = ${APPNAME}_en.ts
source_lang = en
type        = ts
minimum_perc = 25
EOF
fi

# Migrate percent checking
if [ -z "$(grep minimum_perc .tx/config)" ]; then
        echo "minimum_perc = 25" >> .tx/config
fi

# Remove existing translations
find . -type f -name '*.ts' -not -name '*en.ts' -delete

# Get all translations
if command -v tx >/dev/null; then
   echodo tx pull -r antix-development.$APPNAME --all
fi

# en_US duplicates the English source catalog and should not be shipped.
rm -f "${APPNAME}_en_US.ts"

# Find lupdate command in common locations
LUPDATE=""
for cmd in lupdate lupdate-qt6 /usr/lib/qt6/bin/lupdate /usr/bin/lupdate /usr/local/bin/lupdate; do
    if command -v "$cmd" >/dev/null 2>&1; then
        LUPDATE="$cmd"
        break
    fi
done

if [ -z "$LUPDATE" ]; then
    echo "Error: lupdate command not found. Please install Qt development tools."
    exit 1
fi

echo "Using lupdate: $LUPDATE"

# Update all .ts files from source files
SOURCE_FILES=$(find ../src -name "*.cpp" -o -name "*.h" -o -name "*.ui" 2>/dev/null)
if [ -n "$SOURCE_FILES" ]; then
    "$LUPDATE" $SOURCE_FILES -ts *en.ts
fi
