---
name: build_terraform

# This workflow is intended to be called by the build workflow. The crt make
# targets that are utilized automatically determine build metadata and
# handle building and packing Terraform.

on:
  workflow_call:
    inputs:
      cgo-enabled:
        type: string
        default: 0
        required: true
      goos:
        required: true
        type: string
      goarch:
        required: true
        type: string
      go-version:
        type: string
      package-name:
        type: string
        default: terraform
      product-version:
        type: string
        required: true
      ld-flags:
        type: string
        required: true
      runson:
        type: string
        required: true

jobs:
  build:
    runs-on: ${{ inputs.runson }}
    name: Terraform ${{ inputs.goos }} ${{ inputs.goarch }} v${{ inputs.product-version }}
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v3
        with:
          go-version: ${{ inputs.go-version }}
      - name: Determine artifact basename
        run: echo "ARTIFACT_BASENAME=${{ inputs.package-name }}_${{ inputs.product-version }}_${{ inputs.goos }}_${{ inputs.goarch }}.zip" >> $GITHUB_ENV
      - name: Build Terraform
        env:
          GOOS: ${{ inputs.goos }}
          GOARCH: ${{ inputs.goarch }}
          GO_LDFLAGS: ${{ inputs.ld-flags }}
          ACTIONSOS: ${{ inputs.runson }}
          CGO_ENABLED: ${{ inputs.cgo-enabled }}
        uses: hashicorp/actions-go-build@v0.1.7
        with:
          product_name: ${{ inputs.package-name }}
          product_version: ${{ inputs.product-version }}
          go_version: ${{ inputs.go-version }}
          os: ${{ inputs.goos }}
          arch: ${{ inputs.goarch }}
          reproducible: report
          instructions: |-
            mkdir dist out
            set -x
            go build -ldflags "${{ inputs.ld-flags }}" -o dist/ .
            zip -r -j out/${{ env.ARTIFACT_BASENAME }} dist/
      - uses: actions/upload-artifact@v3
        with:
          name: ${{ env.ARTIFACT_BASENAME }}
          path: out/${{ env.ARTIFACT_BASENAME }}
          if-no-files-found: error
      - if: ${{ inputs.goos == 'linux' }}
        uses: hashicorp/actions-packaging-linux@v1
        with:
          name: "terraform"
          description: "Terraform enables you to safely and predictably create, change, and improve infrastructure. It is an open source tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned."
          arch: ${{ inputs.goarch }}
          version: ${{ inputs.product-version }}
          maintainer: "HashiCorp"
          homepage: "https://terraform.io/"
          license: "MPL-2.0"
          binary: "dist/terraform"
          deb_depends: "git"
          rpm_depends: "git"
      - if: ${{ inputs.goos == 'linux' }}
        name: Determine package file names
        run: |
          echo "RPM_PACKAGE=$(basename out/*.rpm)" >> $GITHUB_ENV
          echo "DEB_PACKAGE=$(basename out/*.deb)" >> $GITHUB_ENV
      - if: ${{ inputs.goos == 'linux' }}
        uses: actions/upload-artifact@v3
        with:
          name: ${{ env.RPM_PACKAGE }}
          path: out/${{ env.RPM_PACKAGE }}
          if-no-files-found: error
      - if: ${{ inputs.goos == 'linux' }}
        uses: actions/upload-artifact@v3
        with:
          name: ${{ env.DEB_PACKAGE }}
          path: out/${{ env.DEB_PACKAGE }}
          if-no-files-found: error