# -*- 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
PortGroup               select 1.0
PortGroup               legacysupport 1.1

name                    kubectl
categories              sysutils
platforms               darwin
license                 Apache-2
homepage                https://kubectl.docs.kubernetes.io/

maintainers             {@patarra gmail.com:patarra} \
                        {lbschenkel @lbschenkel} \
                        @pedrohdz \
                        openmaintainer

subport kubectl_select {}

# *NOTE* Remember to update `latestVersion` on a version upgrade.
set latestVersion       kubectl-1.20

subport kubectl-1.20 {
    set patchNumber     0
    checksums           rmd160  8c36300bbc058d2a04b7a1985242a378cf0b2ae2 \
                        sha256  82046a4abb056005edec097a42cc3bb55d1edd562d6f6f38c07318603fcd9fca \
                        size    46226800
}

subport kubectl-1.19 {
    set patchNumber     5
    checksums           rmd160  0ea7885d5822903c443772ecb60155258edf496e \
                        sha256  f5ba6b0263d42717c97c683cae6fb1945a2a2eea9b7c96699f1e136469c9e825 \
                        size    49405456
}

subport kubectl-1.18 {
    set patchNumber     13
    checksums           rmd160  6f1f628e9a3603b574c91ab74f2782d07efcd07c \
                        sha256  b9d423698b0049b2f82ee9bd18e9282e38005c31d0742c704a80606e9445bd04 \
                        size    50125040
}

subport kubectl-1.17 {
    set patchNumber     15
    checksums           rmd160  58bee0742b89eb599b11741f9f75bd87b4bd8602 \
                        sha256  3a075b3f23c23beb2d7ff57f5fc5c52683f59d68644d279f4cf09f2710ffbb18 \
                        size    49542736
}

subport kubectl-1.16 {
    set patchNumber     15
    checksums           rmd160  7450d9abe9aa07c1929b39e96b9e1995257b42ae \
                        sha256  aff54bfaaed905813f61a2d0ca039176d6d309e59f92ebdb297c7da1df105485 \
                        size    48907792
}

subport kubectl-1.15 {
    set patchNumber     10
    checksums           rmd160  22bfa8f33cc5edfcff86bccd6a45a051979799cc \
                        sha256  ac14a937e3b8d70f86f635b08272813f2e00282d05c61c3087bbbd9333738d02 \
                        size    48600048
}

subport kubectl-1.14 {
    set patchNumber     10
    checksums           rmd160  10bdebc38c14482972e0c344d349a6d450c8d182 \
                        sha256  43d2c24eafb2ef09a6ac77c2b99070668e83edaa325a16a362e304ba578fdc48 \
                        size    48716328
}

subport kubectl-1.13 {
    set patchNumber     12
    checksums           rmd160  fdbdf38601ed7767793a4e8540e8454d43c8e91c \
                        sha256  ddbdc7591569f321b8b0a01dcbd679f6b0a7756f1427a51a39eadfce8d34bea7 \
                        size    44353656
}

subport kubectl-1.12 {
    set patchNumber     10
    checksums           rmd160  4212a9f7709ef6a7d36f3ebd477140a7d0ef8e50 \
                        sha256  67acf17bf77b0a9729d17ad5c058a358c0cbd12dbf46478c37111cdd97a0828c \
                        size    56860112
}

subport kubectl-1.11 {
    set patchNumber     10
    checksums           rmd160  8c3f3121088f745bb9eb279f5531b8b61ff84bc7 \
                        sha256  cf27dd3e8d5a13439de2214b7a07e2371cdbeaf151ee4c7d63e7e7c34ebbf117 \
                        size    54985744
}

subport kubectl-1.10 {
    set patchNumber     13
    checksums           rmd160  fe455ab0eb7c862c8dbce970632a9e66c8987cb1 \
                        sha256  94ec5409ac6715dfec11309795da9b30254b9d818f8b1d38d1ca2e914945868d \
                        size    54670032
}

if {${subport} == ${name}} {
    PortGroup           obsolete 1.0

    replaced_by         ${latestVersion}
    version             1.16.0
    revision            2

} elseif {${subport} == "kubectl_select"} {
    version             0.0.0
    revision            0
    supported_archs     noarch

    description         Common files for selecting the default kubectl version
    long_description    This port installs files that allow 'port select' \
                        to create links to the preferred default version \
                        of kubectl.
    homepage            https://www.macports.org/

    distfiles
    use_configure       no
    build {}

    destroot {
        xinstall -d ${destroot}${prefix}/share/bash-completion/completions
        select::install kubectl ${filespath}/base
        select::install kubectl ${filespath}/none
    }

    livecheck.type     none

} else {
    PortGroup           github 1.0

    supported_archs     x86_64
    depends_run         port:kubectl_select

    set baseVersion     [lindex [split ${subport} "-"] 1]
    set patchVersion    ${baseVersion}.${patchNumber}
    set baseName        kubectl${baseVersion}
    github.setup        kubernetes kubectl ${patchVersion}

    description         Kubernetes cluster CLI
    long_description    Command line interface for running commands against \
                        Kubernetes clusters

    master_sites        https://storage.googleapis.com/kubernetes-release/release/v${version}/bin/darwin/amd64
    distname            kubectl
    dist_subdir         ${name}/${version}
    extract.suffix
    extract.only

    use_configure       no

    build {
        file copy ${filespath}/kubectlX.YY.template ${workpath}/${baseName}
        reinplace "s|@@BASE_VERSION@@|${baseVersion}|g" ${workpath}/${baseName}
        reinplace "s|@@PORT_NAME@@|${subport}|g" ${workpath}/${baseName}
    }

    destroot {
        xinstall ${distpath}/kubectl \
            ${destroot}${prefix}/bin/kubectl${baseVersion}

        # kubectl works on 10.10 and newer without legacysupport. standard
        # legacysupport tweaks don't work, since the install here is from
        # a binary tarball ... have to tweak the binary to use the legacy
        # support library, which in turn uses the System.B library.
        if {${os.major} <= 13} {
            system -W ${destroot}${prefix}/bin "install_name_tool -change /usr/lib/libSystem.B.dylib ${prefix}/lib/libMacportsLegacySupport.dylib kubectl${baseVersion}"
        }

        set completionsPath ${destroot}${prefix}/share/${subport}/completion
        xinstall -d ${completionsPath}
        exec ${destroot}${prefix}/bin/kubectl${baseVersion} completion bash \
            > ${completionsPath}/${name}.bash
    }

    # Skip -rc and other pre-release tags
    set regexVersionPart [string map {. {\.}} $baseVersion]
    livecheck.type      regex
    livecheck.url       https://api.github.com/repos/kubernetes/kubernetes/releases?per_page=100
    livecheck.regex     \"name\": \"v(${regexVersionPart}\\.\\d+)\"

    # Generate select file
    select.group        kubectl
    select.file         ${workpath}/${baseName}

    notes "
    To make this the default kubectl run:
        sudo port select --set kubectl ${baseName}
    "
}
