#!/bin/bash
# Script to download kotlin native compiler prebuilts. It builds the URLs
# same as the NativeCompilerDownloader class in the Kotlin repository.
#
# ./download-native-compiler-prebuilts.sh <kotlinVersion>"
#
set -e
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"

function usage {
    echo "$1"
    echo "Usage: ./download-native-compiler-prebuilts.sh <kotlinVersion>"
    exit 1
}

KOTLIN_VERSION=$1
if [ -z $KOTLIN_VERSION ]; then
    usage "Must pass kotlin version as the first argument"
fi

META_VERSION="releases"

BASE_URL="https://download.jetbrains.com/kotlin/native/builds/${META_VERSION}"
LOCAL_PATH="${SCRIPT_DIR}/nativeCompilerPrebuilts/${META_VERSION}"

function downloadPrebuilt {
    local platformName=$1
    local fileName="kotlin-native-prebuilt-${platformName}-${KOTLIN_VERSION}.tar.gz"
    local path="${KOTLIN_VERSION}/${platformName}"
    local remoteUrl="${BASE_URL}/${path}/${fileName}"
    local targetFolder="${LOCAL_PATH}/${path}"
    local targetFile="${targetFolder}/${fileName}"

    if test -f "$targetFile"; then
        echo "File exists, skipping download for $targetFile"
    else
        echo "Will download $remoteUrl into $targetFile"
        (mkdir -p $targetFolder && cd $targetFolder && curl -OL $remoteUrl)
    fi
}

# these are the host platforms where we support building KMP
for PLATFORM_NAME in "linux-x86_64" "macos-aarch64" "macos-x86_64"
do
    downloadPrebuilt $PLATFORM_NAME
done