#!/usr/bin/env bash
#
# Copyright (c) 2024 Sergey Kvachonok
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

set -eu

if [[ $# -lt 1 || "$1" == "-h" ]]; then
    echo Usage:
    echo "   " $0 [--cache dir] url
    echo
    echo Prints the downloaded WDK installers location to stdout.
    exit 0
fi

if [[ "$1" == "--cache" ]]; then
    WDKSETUP_URL=$3
    CACHE_DIR=$2
    mkdir -p "$CACHE_DIR"
else
    WDKSETUP_URL=$1
    CACHE_DIR=$(mktemp -d -t msvc-wine-wdk.tmp.XXXX)
fi

WDKSETUP_EXE="${CACHE_DIR}/wdksetup.exe"

curl -s -L -o "$WDKSETUP_EXE" "$WDKSETUP_URL"

WINE=$(command -v wine64 || command -v wine || false)
export WINEDEBUG=${WINEDEBUG:-"-all"}

WIN_CACHE_DIR=$("$WINE" winepath -w "$CACHE_DIR")

"$WINE" "$WDKSETUP_EXE" /quiet /layout "$WIN_CACHE_DIR"

WDK_INSTALLERS="${CACHE_DIR}/Installers"

echo $WDK_INSTALLERS
