#!/usr/bin/env bash
# usage: ./tools/generate_dotnet_proj.sh ortools/sat/samples/SimpleSatProgram.cs
set -e
declare -r FILE="${1}"
[[ -e "$FILE" ]] || exit 128
declare -r FILE_PROJ="${FILE}proj";
# shellcheck disable=SC2155
declare -r SRC=$(basename "$FILE")
# shellcheck disable=SC2155
declare -r PACKAGES_PATH=$(realpath --relative-to="${FILE%/*}" packages)
if [[ $FILE == *.cs ]] ; then
declare -r LANG_VERSION=" 7.3"
declare -r OR_TOOLS_PKG="Google.OrTools"
else
declare -r LANG_VERSION=""
declare -r OR_TOOLS_PKG="Google.OrTools.FSharp"
fi
declare -r ASSEMBLY_NAME="${OR_TOOLS_PKG}.${SRC%.*}"
# Gets OR_TOOLS_MAJOR and OR_TOOLS_MINOR
declare DIR="${BASH_SOURCE%/*}"
if [[ ! -d "${DIR}" ]]; then
DIR="${PWD}";
fi
# shellcheck disable=SC1090
. "${DIR}/../Version.txt"
# Manage PackageReference(s)
declare DEPS
if [[ $(dirname "$FILE") == examples/tests ]] ; then
declare -r PACKABLE="false"
DEPS=$(cat <
EOF
)
else
declare -r PACKABLE="true"
DEPS=$(cat <
EOF
)
fi
# Generate the .[cf]sproj file
cat >"$FILE_PROJ" <
Exe
${LANG_VERSION}
netcoreapp2.1
false
LatestMajor
${PACKAGES_PATH};\$(RestoreSources);https://api.nuget.org/v3/index.json
${ASSEMBLY_NAME}
${PACKABLE}
full
true
true
${DEPS}
EOL
# vim: set tw=0 ts=2 sw=2 expandtab: