# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem          1.0

name                dotnet-sdk-devel
set main_version    10.0.100
# See patch version in https://dotnet.microsoft.com/download/dotnet/10.0
set patch_version   7.25380.108
version             ${main_version}-preview.${patch_version}
revision            0
categories          dotnet devel
license             MIT
maintainers         {@tsabirgaliev gmail.com:tair.sabirgaliev} \
                    {@judaew judaew} openmaintainer

description         Core functionality needed to create .NET Core projects, that is \
                    shared between Visual Studio and CLI

long_description    .NET is a free, cross-platform, open source developer platform \
                    for building many different types of applications. \
                    \
                    With .NET, you can use multiple languages, editors, and libraries \
                    to build for web, mobile, desktop, games, and IoT.

homepage            https://dotnet.microsoft.com/
platforms           {darwin any} {darwin >= 21}
supported_archs     x86_64 arm64

switch ${build_arch} {
    x86_64 {
        set dotnet_rid osx-x64
        distname            dotnet-sdk-${version}-osx-x64
        checksums           rmd160  b92b3a052a6646f01aede40072c44f5db4c216ba \
                            sha256  ca3dc1c8281c34d618e48b2ebca607b7431482311f000a8611787b716be59ce3 \
                            size    243254421
    }
    arm64 {
        set dotnet_rid osx-arm64
        distname            dotnet-sdk-${version}-osx-arm64
        checksums           rmd160  7347874074cf3b36693aab8af04a564568f89f22 \
                            sha256  548d4d657f99956fc4d202a0fe5b32d4a400ec1945cdb94e04b6e2ec5759de48 \
                            size    235385167
    }
    default {
        known_fail yes
        pre-fetch {
            ui_error "${subport} @ ${version} only supported for architectures ${supported_archs}"
            return -code error "Unsupported architecture: ${build_arch}"
        }
    }
}

master_sites        https://builds.dotnet.microsoft.com/dotnet/Sdk/${version}/

worksrcdir          ${name}-${version}
extract.mkdir       yes

use_configure       no

depends_run         port:dotnet-cli \
                    port:dotnet-runtime-devel \
                    port:aspnetcore-runtime-devel

build {}

destroot {
    set dotnet_home ${prefix}/share/dotnet
    set dotnet_runtime_version 10.0.0-preview.${patch_version}

    # ASP.NET Core Targeting Pack
    set aspnet_target_dir /packs/Microsoft.AspNetCore.App.Ref
    set aspnet_target_version 10.0.0-preview.${patch_version}
    xinstall -d ${destroot}${dotnet_home}${aspnet_target_dir}
    move ${worksrcpath}${aspnet_target_dir}/${aspnet_target_version} ${destroot}${dotnet_home}${aspnet_target_dir}

    # .NET AppHost Pack
    set dotnet_apphost_dir /packs/Microsoft.NETCore.App.Host.${dotnet_rid}
    set dotnet_apphost_version ${dotnet_runtime_version}
    xinstall -d ${destroot}${dotnet_home}${dotnet_apphost_dir}
    move ${worksrcpath}${dotnet_apphost_dir}/${dotnet_apphost_version} ${destroot}${dotnet_home}${dotnet_apphost_dir}

    # .NET Targeting Pack
    set dotnet_target_dir /packs/Microsoft.NETCore.App.Ref
    set dotnet_target_version ${dotnet_runtime_version}
    xinstall -d ${destroot}${dotnet_home}${dotnet_target_dir}
    move ${worksrcpath}${dotnet_target_dir}/${dotnet_target_version} ${destroot}${dotnet_home}${dotnet_target_dir}

    # SDK
    xinstall -d ${destroot}${dotnet_home}/sdk
    move ${worksrcpath}/sdk/${version} ${destroot}${dotnet_home}/sdk

    # SDK-Manifests
    set dotnet_manifest_version 10.0.100
    xinstall -d ${destroot}${dotnet_home}/sdk-manifests
    move ${worksrcpath}/sdk-manifests/${dotnet_manifest_version} ${destroot}${dotnet_home}/sdk-manifests
    # remove these once all out of preview
    # move ${worksrcpath}/sdk-manifests/9.0.100-preview.1 ${destroot}${dotnet_home}/sdk-manifests
    # move ${worksrcpath}/sdk-manifests/9.0.100-preview.4 ${destroot}${dotnet_home}/sdk-manifests

    # Templates
    set dotnet_templates_version 10.0.0-preview.${patch_version}
    xinstall -d ${destroot}${dotnet_home}/templates
    move ${worksrcpath}/templates/${dotnet_templates_version} ${destroot}${dotnet_home}/templates
}

livecheck.version   [join [lrange [split ${patch_version} .] 0 0] .]
livecheck.type      regex
livecheck.url       https://dotnet.microsoft.com/download/dotnet/9.0
livecheck.regex     "SDK ${main_version}-preview.(\\d)"
