set -euo pipefail

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
ARCH=$(uname -m)
TEMP_DIR="${SCRIPT_DIR}/temp"
SOS="${TEMP_DIR}/sos"

echo "Publishing ${PROJECT} to gitea.jde.nz/public/${PROJECT}:latest"

function die() {
    title "error: $1"
    exit 1
}

[[ -n $SOS_WRITE_TOKEN ]] || die "SOS_WRITE_TOKEN not specified"

# clear output dir
rm -rf "${SCRIPT_DIR}/output" 
mkdir -p "${SCRIPT_DIR}/output"

# build release version
export CMAKE_BUILD_TYPE="Release"
export PROJECT="dropshell-tool"

docker build \
  -t "${PROJECT}-build" \
  -f "${SCRIPT_DIR}/Dockerfile.dropshell-build" \
  --build-arg PROJECT="${PROJECT}" \
  --build-arg CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" \
  --output "${SCRIPT_DIR}/output" \
  "${SCRIPT_DIR}"

[ -f ${SCRIPT_DIR}/output/dropshell-tool ] || die "Build failed."

# download the sos binary
mkdir -p "${TEMP_DIR}"
trap 'rm -rf "${TEMP_DIR}"' EXIT
curl -L -o "${SOS}" "https://getbin.xyz/sos"
chmod +x "${SOS}"

# upload arch-specific binary
"${SOS}" upload "getbin.xyz" "${SCRIPT_DIR}/output/${PROJECT}" "${PROJECT}:latest-${ARCH}"

# upload generic install script (ok if multiple times as we iterate through arch's)
"${SOS}" upload "getbin.xyz" "${SCRIPT_DIR}/install.sh" "${PROJECT}-install:latest"