# -*- 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
set customDistSubDir    yes

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     9
    revision            0

    set armAvailable    yes

    checksums           [terraformDistBase]_amd64.zip \
                        rmd160  e10a29ec679629de7631538fbcd93af6c949b89c \
                        sha256  ca78815afd657f887de7f9b74014dc4bddffe80fd28028179b271a3c4f64f29a \
                        size    21194874 \
                        [terraformDistBase]_arm64.zip \
                        rmd160  28012de87d77b5f8c29da38ea4b4b2e3c07e709f \
                        sha256  9df6fc8a9264bba1058e6e9383f43af2ee816088e61925e5bc45128ad8b6e9ad \
                        size    19793375

    set customDistSubDir no
}

subport terraform-1.2 {
    set patchNumber     9
    revision            1

    set armAvailable    yes

    checksums           [terraformDistBase]_amd64.zip \
                        rmd160  04de8ebe3f669749633baaf8fbffbb0bd0e3af2a \
                        sha256  2c4d2b425a0680c6a4d65601a5f42f8b5c23e4ccd3332cf649ce14eaa646b967 \
                        size    21672801 \
                        [terraformDistBase]_arm64.zip \
                        rmd160  fd4c14e6069779bd37fafc555f56b741d946e03a \
                        sha256  91f51a352027f338b7673f23ee3c438ca8575933b7f58bfd7a92ffccf552158b \
                        size    20280537
}

subport terraform-1.1 {
    set patchNumber     9
    revision            1

    set armAvailable    yes

    checksums           [terraformDistBase]_amd64.zip \
                        rmd160  f8ccb12d1edec6cf17ea5a8f741cb993e9573253 \
                        sha256  26afa7cda355fbf32a2b4cfd9122a49132f1b68337691b91f05caa0b1023c388 \
                        size    20850633 \
                        [terraformDistBase]_arm64.zip \
                        rmd160  d257bc5f7d94fde348975b6b9092e928271b59e2 \
                        sha256  80a230b56853f0fd50e12006c0d527da6a7f2e9974f25f7d372abfa2761ee3a3 \
                        size    20093183
}

subport terraform-1.0 {
    set patchNumber     11
    revision            1

    set armAvailable    yes

    checksums           [terraformDistBase]_amd64.zip \
                        rmd160  a988402d3cd99b9d932206626b711725a9b7853b \
                        sha256  5b6771c87f3febde756baa132d38a67fcac284291a1f88918a58a41d879d2558 \
                        size    19422758 \
                        [terraformDistBase]_arm64.zip \
                        rmd160  b1c556cfaa52c9b3a4e23d0a84093f69680926ae \
                        sha256  435cc512332c28c38c98cda11a2ef3670564cfc85ba4e6fe0a73462713799f9e \
                        size    18467870
}

subport terraform-0.15 {
    set patchNumber     5
    revision            1
    checksums           rmd160  6cf3903793848fd2ef0180ec37b3989f1117536a \
                        sha256  4ee2ed9b769426cc9f13bd26c133ee66c6046acffeef632ddf0ef66e3d36a981 \
                        size    33932321
}

subport terraform-0.14 {
    set patchNumber     11
    revision            1
    checksums           rmd160  658517e12bcf8457a9c3fd5eda70d3a5d49529ba \
                        sha256  143ee31a4ae61564762ca5fe40851a0ec661698b73026e3cc0061f9867c7b67f \
                        size    34764927
}

subport terraform-0.13 {
    set patchNumber     7
    revision            1
    checksums           rmd160  58d16b69ad295ff35c3b3cf971adf93d2ce7afd6 \
                        sha256  2ee62413afc847d9771d46d73fad6c7e8670bcdf44190320b5fb6a3a38ec6480 \
                        size    35823336
}

subport terraform-0.12 {
    set patchNumber     31
    revision            1
    checksums           rmd160  8d8c6842db51226e6fe01ab9c84fb91013b94be3 \
                        sha256  794e736283b93b364d7f1c36ec8f47912ec6f6a0692b2108d0fb3908b5d3b5af \
                        size    29365294
}

subport terraform-0.11 {
    set patchNumber     15
    revision            1
    checksums           rmd160  2a6145f60df76d1052583b5cb82e15e3865d44e0 \
                        sha256  e98434b0d35c4ec058479148dd590d2bbf3e419fcc6db204522cc4b0bbd9ec25 \
                        size    22024453
}

subport terraform_select {}

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

    replaced_by         ${latestVersion}
    version             1.3.9
    revision            0

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

    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
        }
    }

    if ${customDistSubDir} {
        dist_subdir   ${name}/${version}_${revision}
    }

    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}
    "
}
