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

# Directory of *this* script
this_dir="$( cd "$( dirname "$0" )" && pwd )"

# Base directory of repo
base_dir="$(realpath "${this_dir}/..")"

# Path to virtual environment
: "${venv:=${base_dir}/venv}"

if [ -d "${venv}" ]; then
    # Activate virtual environment if available
    source "${venv}/bin/activate"
fi

intents_dir="${base_dir}/home_assistant_intents"
data_dir="${intents_dir}/data"
rm -rf "${data_dir}"
rm -rf "${base_dir}/dist"

python3 "${base_dir}/script/merged_output.py" "${data_dir}"
python3 "${base_dir}/script/write_languages.py" "${data_dir}" > "${intents_dir}/languages.py"
python3 "${base_dir}/script/write_language_scores.py" "${base_dir}/intents" > "${intents_dir}/language_scores.json"
black "${intents_dir}/languages.py"
cd "${base_dir}" && python3 -m build

# Sanity check
echo 'Running sanity check...'
latest_wheel="$(ls -t "${base_dir}/dist"/*.whl | head -n1)"
if [ -z "${latest_wheel}" ]; then
    echo 'No wheel found in dist directory!'
    exit 1
fi

test_dir="$(mktemp -d)"
trap 'rm -rf "${test_dir}"' EXIT

python3 -m venv "${test_dir}"
test_python3="${test_dir}/bin/python3"
"${test_python3}" -m pip install pytest "${latest_wheel}"
"${test_python3}" -m pytest -vv "${base_dir}/tests/test_intents.py"

echo "See: ${base_dir}/dist"
