#!/usr/bin/env bash
# shellcheck disable=SC2079

set -x

version="${1:-3.21.1}"

# We require CMake >= 3.13 in the CI to support CUDA builds
readonly -A linuxParamsByVersion=(
['3.13.5']='e2fd0080a6f0fc1ec84647acdcd8e0b4019770f48d83509e6a5b0b6ea27e5864	Linux'
['3.21.1']='bf496ce869d0aa8c1f57e4d1a2e50c8f2fb12a6cd7ccb37ad743bb88f6b76a1e	linux'
)

if [ -z "${linuxParamsByVersion[$version]}" ]
then
  echo "Given version ($version) is unsupported"
  exit 1
fi

case "$( uname -s )" in
    Linux)
        shatool="sha256sum"
        sha256sum=$(cut -f 1 <<<"${linuxParamsByVersion[$version]}")
        platform=$(cut -f 2 <<<"${linuxParamsByVersion[$version]}")
        arch="x86_64"
        ;;
    Darwin)
        shatool="shasum -a 256"
        sha256sum="20dbede1d80c1ac80be2966172f8838c3d899951ac4467372f806b386d42ad3c"
        platform="macos"
        arch="universal"
        ;;
    *)
        echo "Unrecognized platform $( uname -s )"
        exit 1
        ;;
esac
readonly shatool
readonly sha256sum
readonly platform
readonly arch

readonly filename="cmake-$version-$platform-$arch"
readonly tarball="$filename.tar.gz"

cd .gitlab || exit

echo "$sha256sum  $tarball" > cmake.sha256sum
curl -OL "https://github.com/Kitware/CMake/releases/download/v$version/$tarball"
$shatool --check cmake.sha256sum
tar xf "$tarball"
mv "$filename" cmake

if [ "$( uname -s )" = "Darwin" ]; then
    ln -s CMake.app/Contents/bin cmake/bin
fi
