# -*- 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

name                    terraform
categories              sysutils
installs_libs           no
license                 MPL-2
homepage                https://www.terraform.io/downloads.html

maintainers             {emcrisostomo @emcrisostomo} \
                        {gmail.com:herby.gillot @herbygillot} \
                        @pedrohdz \
                        openmaintainer

# *NOTE* Remember to update `latestVersion` on a version upgrade.
set latestVersion       terraform-1.3

set armAvailable        no

proc terraformBaseVersion {} {
    global subport
    return [lindex [split ${subport} "-"] 1]
}

proc terraformVersion {} {
    global patchNumber
    return [terraformBaseVersion].${patchNumber}
}

proc terraformDistBase {} {
    global name
    return ${name}_[terraformVersion]_darwin
}

subport terraform-1.3 {
    set patchNumber     6

    set armAvailable    yes

    checksums           [terraformDistBase]_amd64.zip \
                        rmd160  58ee8b8c8032babf6df656053861af1567d49184 \
                        sha256  5ab98e2d9f3b908fd6422a0562e829cc17eb055c8e242427d16d0a13506d401b \
                        size    20848375 \
                        [terraformDistBase]_arm64.zip \
                        rmd160  b1007081803bd161303f4bfb8d848fdedc586eb7 \
                        sha256  f1c20b2180c982bdda8384b1316209d20fc55def4f0354ead7a2a8e04c89f54e \
                        size    19288406
}

subport terraform-1.2 {
    set patchNumber     9

    set armAvailable    yes

    checksums           [terraformDistBase]_amd64.zip \
                        rmd160  9be5fe69559e05347a3f147981c7e5299a8da27c \
                        sha256  46206e564fdd792e709b7ec70eab1c873c9b1b17f4d33c07a1faa9d68955061b \
                        size    21329275 \
                        [terraformDistBase]_arm64.zip \
                        rmd160  a4bc3fa4815499cb8f80e27582e9986bbe6be8b4 \
                        sha256  e61195aa7cc5caf6c86c35b8099b4a29339cd51e54518eb020bddb35cfc0737d \
                        size    19773052
}

subport terraform-1.1 {
    set patchNumber     9

    set armAvailable    yes

    checksums           [terraformDistBase]_amd64.zip \
                        rmd160  e6538bdf426ea5921331a486c3ac75a1b51c3146 \
                        sha256  c902b3c12042ac1d950637c2dd72ff19139519658f69290b310f1a5924586286 \
                        size    20709155 \
                        [terraformDistBase]_arm64.zip \
                        rmd160  1831a902fd94614825b5339d9aeae8411fdd187e \
                        sha256  918a8684da5a5529285135f14b09766bd4eb0e8c6612a4db7c121174b4831739 \
                        size    19835808
}

subport terraform-1.0 {
    set patchNumber     11

    set armAvailable    yes

    checksums           [terraformDistBase]_amd64.zip \
                        rmd160  a8ea8e4ec4087d753801f19c5f5625204cfcc098 \
                        sha256  92f2e7eebb9699e23800f8accd519775a02bd25fe79e1fe4530eca123f178202 \
                        size    19340098 \
                        [terraformDistBase]_arm64.zip \
                        rmd160  5194880e62164b3991d14e8ef39ef6f5e5a05c5c \
                        sha256  0f38af81641b00a2cbb8d25015d917887a7b62792c74c28d59e40e56ce6f265c \
                        size    18498208
}

subport terraform-0.15 {
    set patchNumber     5
    checksums           rmd160  d57fbd764112a5cc7d46b04c8d17d220eb5fddc8 \
                        sha256  27d5ae2431240dff928e6483170b570782a8dd1a2b7c32ce1793097af1acb9bd \
                        size    33803323
}

subport terraform-0.14 {
    set patchNumber     11
    checksums           rmd160  9c9236549e343f402e3617cea6f5773f2695b06b \
                        sha256  5c0110a4dc44ec01edd159c69bf60cebd18540eaf168aacd8b37d828b70e265d \
                        size    34597577
}

subport terraform-0.13 {
    set patchNumber     7
    checksums           rmd160  aa35c4f8d1d03fb05736fb1dcabc3a243b8a72d6 \
                        sha256  d5fbb589bc35c2655d0705c26117135cbb25e4259f120415009e0e6427ea97c8 \
                        size    35672990
}

subport terraform-0.12 {
    set patchNumber     31
    checksums           rmd160  3b275cfdfa5adbe8834bf3b1eaf3a9352f1e2389 \
                        sha256  c1a6ca04026cebe7849610037ebc960609484c25f47a58344efaa7fcd5be1e56 \
                        size    29180819
}

subport terraform-0.11 {
    set patchNumber     15
    checksums           rmd160  0887b1812921fce1135170c23a9faf1775f5db5f \
                        sha256  b0d2c9f9068be007f9b8eff211a679e1f07368b640245871bb02a6c2cdf28c07 \
                        size    21882476
}

subport terraform_select {}

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

    replaced_by         ${latestVersion}
    version             1.3.6
    revision            0

} elseif {${subport} eq "terraform_select"} {
    version             0.0.0
    revision            0
    supported_archs     noarch

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

    distfiles
    use_configure       no
    build {}

    destroot {
        select::install terraform ${filespath}/base
        select::install terraform ${filespath}/none
    }

    livecheck.type     none

} else {
    set baseVersion     [terraformBaseVersion]
    set baseName        terraform${baseVersion}

    version             [terraformVersion]

    distname            [terraformDistBase]_amd64
    supported_archs     x86_64

    if ${armAvailable} {
        supported_archs x86_64 arm64

        if {${build_arch} eq "arm64"} {
            distname    [terraformDistBase]_arm64
        }
    }

    depends_run         port:terraform_select

    description         A tool for building, changing, and versioning \
                        infrastructure safely and efficiently.
    long_description \
                        Terraform is an infrastructure as code software \
                        by HashiCorp. It allows users to define a datacenter \
                        infrastructure in a high-level configuration language, \
                        from which it can create an execution plan to build \
                        the infrastructure in a service provider such as AWS.

    master_sites        https://releases.hashicorp.com/${name}/${version}

    use_configure       no
    use_zip             yes
    extract.mkdir       yes

    select.group        terraform
    select.file         ${workpath}/${baseName}

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

    destroot {
        xinstall ${worksrcpath}/terraform \
            ${destroot}${prefix}/bin/terraform${baseVersion}
    }

    set regexVersionPart [string map {. {\.}} $baseVersion]
    livecheck.type      regex
    livecheck.url       https://releases.hashicorp.com/terraform/
    livecheck.regex     >terraform_(${regexVersionPart}\\.\\d+)<

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