#!/bin/bash

set -eu

case $(git status --porcelain --untracked-files=no) in
    "") ;;
    *) echo "ERROR: Current working copy has been modified - not proceeding"; exit 2;;
esac

mkdir -p packages
echo

. deploy/metadata.sh

if [ -d /Applications ]; then

    archs="x86_64 arm64"
    
    qtdir_x86_64="/Users/cannam/Qt/6.7.2/macos"

    qtdir_arm64="$qtdir_x86_64"

    echo "Proceed to rebuild, package, and sign version $version of $full_name using:"
    for arch in $archs; do
	case "$arch" in
	    x86_64) qtdir="$qtdir_x86_64";;
	    arm64) qtdir="$qtdir_arm64";;
	    *) echo "(internal error, unknown arch)"; exit 1;;
	esac
	echo "-> for arch $arch: Qt dir $qtdir"
	if [ ! -d "$qtdir" ]; then
	    echo "*** ERROR: Qt dir $qtdir does not exist"
	    exit 1
	fi
	qmake=$qtdir/bin/qmake
	if [ ! -f "$qmake" ]; then
	    echo "*** ERROR: qmake not found in $qmake (for Qt dir $qtdir)"
	    exit 1
	fi
	if ! lipo -archs "$qmake" | grep -q "$arch"; then
	    echo "*** ERROR: wrong arch $qmake_arch for qmake $qmake (expected $arch)"
	    exit 1
	fi
    done
    echo -n "[Yn] ? "
    read yn
    case "$yn" in "") ;; [Yy]) ;; *) exit 3;; esac
    echo "Proceeding"

    ./repoint install

    builddirs=""

    for arch in $archs; do

	case "$arch" in
	    x86_64) qtdir="$qtdir_x86_64";;
	    arm64) qtdir="$qtdir_arm64";;
	esac

	builddir="build-$arch"
	
	rm -rf "$builddir"
	PATH="$qtdir/bin:$PATH" arch -$arch meson setup "$builddir" --cross-file=deploy/cross/macos-$arch.txt --buildtype release -Db_lto=true
	ninja -C "$builddir"

	builddirs="$builddirs $builddir"

    done

    rm -rf "$full_app"
    rm -rf "$full_versioned"
    rm -f "$full_dmg"

    deploy/macos/deploy-and-package.sh $builddirs

    mv "$full_dmg" packages/

else

    echo -n "Proceed to rebuild and package version $version [Yn] ? "
    read yn
    case "$yn" in "") ;; [Yy]) ;; *) exit 3;; esac
    echo "Proceeding"

    current=$(git rev-parse --short HEAD)

    ./deploy/linux/build-and-test-appimage.sh

    squashedversion=$(echo "$version" | sed 's/_-//g')

    mv deploy/linux/docker/output/SonicVisualiser-"$current"-x86_64.AppImage \
	packages/SonicVisualiser-"$squashedversion"-x86_64.AppImage

    ./deploy/linux/build-and-test-deb.sh

    mv deploy/linux/docker/output/sonic-visualiser_"$version"_amd64.deb \
	packages/
fi

echo "Done"

