#!/bin/bash

set -e

SRC="$HOME/freedv-gui-3.0"
BUILD="$SRC/build_windows"
SAVE_DIR="$HOME/FreeDV-builds"

echo
echo "=============================================="
echo " FreeDV 3.0-dev Windows x86_64 updater"
echo "=============================================="
echo

cd "$SRC"

echo "[1/6] Checking for updates..."

git fetch origin

CURRENT=$(git rev-parse HEAD)
LATEST=$(git rev-parse origin/v3.0-dev)

echo "Current : ${CURRENT:0:12}"
echo "Latest  : ${LATEST:0:12}"
echo

if [ "$CURRENT" = "$LATEST" ]; then
    echo "No update available."
    echo "Nothing to build."
    exit 0
fi

echo "New FreeDV 3.0-dev version found."
echo

echo "[2/6] Updating source..."

git reset --hard origin/v3.0-dev

echo
git log -1 --format='%h %ad %s' --date=iso
echo

echo "[3/6] Running CMake..."

mkdir -p "$BUILD"
cd "$BUILD"

cmake \
    -DCMAKE_TOOLCHAIN_FILE=../cross-compile/freedv-mingw-llvm-x86_64.cmake \
    ..

echo

echo "[4/6] Building FreeDV..."

make -j"$(nproc)"

echo

echo "[5/6] Creating Windows installer..."

make package

echo

echo "[6/6] Saving installer..."

mkdir -p "$SAVE_DIR"

PACKAGE=$(find "$BUILD" -maxdepth 1 -type f -name 'FreeDV-*.exe' | sort | tail -n 1)

if [ -z "$PACKAGE" ]; then
    echo "ERROR: Windows installer not found."
    exit 1
fi

FILENAME=$(basename "$PACKAGE")

cp "$PACKAGE" "$SAVE_DIR/$FILENAME"

echo
echo "=============================================="
echo " Build completed successfully"
echo "=============================================="
echo

echo "FreeDV executable:"
ls -lh "$BUILD/src/freedv.exe"

echo
echo "Windows installer:"
ls -lh "$SAVE_DIR/$FILENAME"

echo
echo "Version:"
cat "$BUILD/freedv-version.txt"

echo
echo "Saved to:"
echo "$SAVE_DIR/$FILENAME"

echo
echo "Done."

