---
name: releases

on:
  push:
    tags:
      - "v*"

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        # build targets
        include:
          - goos: linux
            goarch: amd64
          - goos: linux
            goarch: '386'
          - goos: darwin
            goarch: amd64
    steps:
      - name: Checkout source code
        uses: actions/checkout@v2.3.4
        with:
          lfs: true
          fetch-depth: 0

      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.18

      - name: Build for Linux-amd64
        env:
          GOOS: ${{ matrix.goos }}
          GOARCH: ${{ matrix.goarch }}

        run: |
          v=$(echo ${GITHUB_REF} | awk -F/ '{print substr($3,2,10);}')
          go build -x -v -mod=vendor -ldflags "-X main.version=${v} -w -s" -o "tty-share_${GOOS}-${GOARCH}"

      - name: Upload to artifact storage
        uses: actions/upload-artifact@v2
        with:
          path: tty-share_${{ matrix.goos }}-${{ matrix.goarch }}
          if-no-files-found: error
          # only meant for sharing with the publish job
          retention-days: 1

  publish:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/download-artifact@v2
        with:
          path: tty-share_*

      - uses: "marvinpinto/action-automatic-releases@latest"
        with:
          repo_token: "${{ secrets.GITHUB_TOKEN }}"
          prerelease: false
          files: |
            tty-share_*
        id: "automatic_releases"
