#!/usr/bin/env bash


# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2


export PATH
trap 'exit 128' INT


dotnet_versions=(
    netcoreapp3.1
)

dotnet_compat=""

tmpdir="$(mktemp -d --suffix=.gentoo-dotnet-check-versions)"
echo " * tmpdir: ${tmpdir}"

if [[ -n "${1}" ]] ; then
    dotnet_exe="$(realpath "${1}")"
    echo " * dotnet_exe: ${dotnet_exe}"
else
    echo " * ${0}: no dotnet_exe given, select a binary .NET SDK exe"
    exit 1
fi

for v in 6.0 7.0 8.0 ; do
    dotnet_versions+=( "net${v}" )

    if [[ "${dotnet_exe}" == *${v} ]] ; then
        dotnet_compat="${v}"
        break
    fi

    echo " * Selected dotnet_exe is compatible with .NET version ${v}"
done

if [[ -z "${dotnet_compat}" ]] ; then
    dotnet_compat=8.0
fi

echo " * Maximal dotnet_compat: ${dotnet_compat}"


for dotnet_version in "${dotnet_versions[@]}" ; do
    echo ">>> Running restore checks for .NET version ${dotnet_version}"

    vtmpdir="${tmpdir}"/${dotnet_version}
    mkdir -p "${vtmpdir}"
    cd "${vtmpdir}" || exit 1

    cat > "${vtmpdir}"/project.csproj <<EOF
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <NoWarn>\$(NoWarn);NETSDK1138</NoWarn>
    <RollForward>Major</RollForward>
    <TargetFramework>${dotnet_version}</TargetFramework>
  </PropertyGroup>
</Project>
EOF

    gentoo-dotnet-restore "$(pwd)" "${dotnet_compat}" "${dotnet_exe}"

    rm -f -r "${vtmpdir}"
done

rm -f -r "${tmpdir}"
