#!/usr/bin/env bash
set -euo pipefail

# 确保工作目录为脚本所在目录
cd "$(dirname "$0")"

echo "Working directory: $(pwd)"

# ============================================
# 下载 Wiktionary 原始数据
# ============================================

# 封装下载过程：先下载到 .tmp 文件，成功后再重命名
download_file() {
    local url="$1"
    local output="$2"

    local tmp_output="${output}.tmp"

    echo "  Downloading: $url"
    echo "  -> $output"

    if wget -O "$tmp_output" "$url"; then
        mv "$tmp_output" "$output"
        echo "  Done."
    else
        echo "  Failed to download: $url" >&2
        rm -f "$tmp_output"
        return 1
    fi

    echo "  Generating SHA256 for ${output}"
    sha256sum "$output" > "${output}.sha256"
    echo "  Done."
}

# ── 英文 Wiktionary ──────────────────────────
echo "Downloading English language version..."
URL_EN="https://kaikki.org/dictionary/raw-wiktextract-data.jsonl.gz"
OUTPUT_EN="en/raw-wiktextract-data.jsonl.gz"
mkdir -p en/split

download_file "$URL_EN" "$OUTPUT_EN"

#echo "Download English language version (uncompressed)..."
#URL_EN="https://kaikki.org/dictionary/raw-wiktextract-data.jsonl"
#OUTPUT_EN="en/raw-wiktextract-data.jsonl"

#download_file "$URL_EN" "$OUTPUT_EN"

# ── Simple English Wiktionary ────────────────
echo "Downloading simple English version..."
URL_SIMPLE_GZ="https://kaikki.org/dictionary/downloads/simple/simple-extract.jsonl.gz"
OUTPUT_SIMPLE_GZ="simple/simple-extract.jsonl.gz"
mkdir -p simple

download_file "$URL_SIMPLE_GZ" "$OUTPUT_SIMPLE_GZ"

URL_SIMPLE_JSON="https://kaikki.org/dictionary/downloads/simple/simple-extract.jsonl"
OUTPUT_SIMPLE_JSON="simple/simple-extract.jsonl"

download_file "$URL_SIMPLE_JSON" "$OUTPUT_SIMPLE_JSON"


# -- Chinese Wiktionary ------
URL_ZH="https://kaikki.org/dictionary/downloads/zh/zh-extract.jsonl.gz"
OUTPUT_ZH="zh/zh-extract.jsonl.gz"
mkdir -p zh

download_file "$URL_ZH" "$OUTPUT_ZH"


# -- German Wiktionary ------
URL_DE="https://kaikki.org/dictionary/downloads/de/de-extract.jsonl.gz"
OUTPUT_DE="de/de-extract.jsonl.gz"
mkdir -p de

download_file "$URL_DE" "$OUTPUT_DE"

# -- Russia Wiktionary -----
URL_RU="https://kaikki.org/dictionary/downloads/ru/ru-extract.jsonl.gz"
OUTPUT_RU="ru/ru-extract.jsonl.gz"
mkdir -p ru

download_file "$URL_RU" "$OUTPUT_RU"


# split en version into 10 pieces
#OUTPUT_EN="en/raw-wiktextract-data.jsonl.gz"
echo "Splitting English language version to 10 pieces..."
if python3 ../split_jsonl.py -o en/split.tmp/ -p raw-wiktextract-data "$OUTPUT_EN" 10; then
    rm -rf en/split/
    mv en/split{.tmp,}
    echo "  Split done."
else
    echo "  Failed to split English language version." >&2
    exit 1
fi

# split zh version into 3 pieces
echo "Splitting Chinese language version to 3 pieces..."
if python3 ../split_jsonl.py -o zh/split.tmp/ -p zh "$OUTPUT_ZH" 3; then
    rm -rf zh/split/
    mv zh/split{.tmp,}
    echo "  Split done."
else
    echo "  Failed to split Chinese language version." >&3
    exit 1
fi


# -- Finished -----
echo "Done."
