# -*- 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
license                 MPL-2
platforms               darwin
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-0.12
subport terraform-0.12 {
    set patchNumber     18
    checksums           rmd160  96a09c613a4e6a669cd62792de3bdc1762679d8a \
                        sha256  dd6983cfe0d0922de51e019a80db2a270e8a2636b9f05b49bf7dcbfe7bd90ea9 \
                        size    17965753
}

subport terraform-0.11 {
    set patchNumber     14
    checksums           rmd160  830e133976923d63ffe2ef6292eb37569e88a801 \
                        sha256  829bdba148afbd61eab4aafbc6087838f0333d8876624fe2ebc023920cfc2ad5 \
                        size    13141311
}

subport terraform_select {}

if {${subport} == ${name}} {
    PortGroup           obsolete 1.0
    replaced_by         ${latestVersion}
    version             0.12.18
    revision            1

} elseif {${subport} == "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     [lindex [split ${subport} "-"] 1]
    set baseName        terraform${baseVersion}

    version             ${baseVersion}.${patchNumber}
    supported_archs     x86_64
    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}
    distname            ${name}_${version}_darwin_amd64

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