name: build

run-name: ${{ gitea.actor }} build MouseSoft Draw.IO Export

on:
  push:
    branches:
      - "**"
    tags-ignore:
      - "v*"

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: check-out repository code
        uses: https://gitea.com/actions/checkout@v4
        with:
          fetch-depth: 0
          fetch-tags: true

      - name: set-up go
        uses: https://gitea.com/actions/setup-go@v3
        with:
          go-version: ">=1.22"

      - name: set-up dependencies
        run: make clean vendor

      - name: test
        run: make lint test

      - name: build amd64 binary
        id: build-amd
        run: |
          echo "ARTIFACT=drawio-export-$(make version)_$(go env GOOS)-amd64" >> $GITHUB_OUTPUT
          GOARCH=amd64 make clean build

      - name: upload amd64 binary artifact
        uses: https://gitea.com/actions/upload-artifact@v3
        with:
          name: ${{ steps.build-amd.outputs.ARTIFACT }}
          path: out/bin/*
          overwrite: true

      - name: build arm64 binary
        id: build-arm
        run: |
          echo "ARTIFACT=drawio-export-$(make version)_$(go env GOOS)-arm64" >> $GITHUB_OUTPUT
          GOARCH=arm64 make clean build

      - name: upload arm64 binary artifact
        uses: https://gitea.com/actions/upload-artifact@v3
        with:
          name: ${{ steps.build-arm.outputs.ARTIFACT }}
          path: out/bin/*
          overwrite: true

  build_windows:
    runs-on: windows
    defaults:
      run:
        shell: bash
    steps:
      - name: check-out repository code
        uses: https://gitea.com/actions/checkout@v4
        with:
          fetch-depth: 0
          fetch-tags: true

      - name: set-up dependencies
        run: make vendor

      - name: build
        id: build
        run: |
          echo "ARTIFACT=drawio-export-$(make version)_$(go env GOOS)-$(go env GOARCH)" >> $GITHUB_OUTPUT
          make build

      - name: upload artifact
        uses: https://gitea.com/actions/upload-artifact@v3
        with:
          name: ${{ steps.build.outputs.ARTIFACT }}
          path: out/bin/*
          overwrite: true
