name: wireguard-ui build release

on:
  release:
    types: [created]

jobs:
  releases-matrix:
    name: Release Go Binary
    runs-on: ubuntu-latest
    strategy:
      matrix:
        # build and publish in parallel: linux/386, linux/amd64, darwin/386, darwin/amd64
        goos: [linux, freebsd, darwin]
        goarch: [386, amd64, arm, arm64]
        exclude:
          - goarch: 386
            goos: darwin
          - goarch: arm
            goos: darwin
          - goarch: arm64
            goos: darwin
        goarm:
          - 7
    steps:
    # get the source code
    - uses: actions/checkout@v2

    # set environment
    - name: Set APP_VERSION env
      run: echo "APP_VERSION=$(echo ${GITHUB_REF} | rev | cut -d'/' -f 1 | rev )" >> $GITHUB_ENV
    - name: Set BUILD_TIME env
      run: echo "BUILD_TIME=$(date)" >> $GITHUB_ENV
    - name: Environment Printer
      uses: managedkaos/print-env@v1.0

    # setup node
    - uses: actions/setup-node@v2
      with:
        node-version: '14'
        registry-url: 'https://registry.npmjs.org'

    # prepare assets for go rice
    - name: Prepare assets
      run: |
        chmod +x ./prepare_assets.sh
        ./prepare_assets.sh

    # get go rice tool
    - name: Get go rice tool
      run: go get github.com/GeertJohan/go.rice/rice

    # run go rice embed
    - name: Run go rice embed
      run: ${HOME}/go/bin/rice embed-go

    # build and make the releases
    - name: Build and make the releases
      uses: wangyoucao577/go-release-action@master
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        goos: ${{ matrix.goos }}
        goarch: ${{ matrix.goarch }}
        goversion: "https://dl.google.com/go/go1.16.1.linux-amd64.tar.gz"
        binary_name: "wireguard-ui"
        build_flags: -v
        ldflags: -X "main.appVersion=${{ env.APP_VERSION }}" -X "main.buildTime=${{ env.BUILD_TIME }}" -X main.gitCommit=${{ github.sha }} -X main.gitRef=${{ github.ref }}