name: Build & Release
run-name: ${{ gitea.actor }} is testing out Gitea Actions
on:
  push:
    tags:
      - "v*"

jobs:
  Windows-AMD64-Build:
    runs-on: windows-x86_64
    steps:
      - name: Check out repository code
        uses: actions/checkout@v3

      - name: Generating Documentation
        run: |
          doxygen ehs-docs-config.doxyfile

      - name: Building/Compiling/Installing Project
        run: |
          cd ${{ gitea.workspace }}
          cmake -A x64 -DCMAKE_BUILD_TYPE=Release --preset=default .
          cd build
          cmake --build . --config Release
          cmake --install .

      - name: Creating Appropriate Directories
        run: |
          cd ${{ gitea.workspace }}
          mkdir bin
          mv build/Release/StrToHash.exe bin
          mv build/Release/zlib1.dll bin
          mkdir lib
          mv build/Release/EHS.lib lib

      - name: Zipping Binaries
        run: |
          cd ${{ gitea.workspace }}
          tar -a -c -f ehs-windows-amd64.zip include bin lib docs LICENSE README.md

      - uses: https://github.com/actions/setup-go@v4
        with:
          go-version: '>=1.20.1'

      - name: Use Go Action
        id: use-go-action
        uses: https://gitea.com/actions/release-action@main
        with:
          files: |-
            ehs-windows-amd64.zip
          api_key: '${{secrets.RELEASE_TOKEN}}'

  Linux-AMD64-Build:
    runs-on: linux-x86_64
    steps:
      - name: Check out repository code
        uses: actions/checkout@v3

      - name: Installing Dependencies
        run: |
          sudo pacman -S --noconfirm doxygen zip alsa-lib libxcb xcb-util-cursor

      - name: Generating Documentation
        run: |
          doxygen ehs-docs-config.doxyfile

      - name: Building/Compiling/Installing Project
        run: |
          cd ${{ gitea.workspace }}
          cmake -DCMAKE_BUILD_TYPE=Release -DLINUX_WINDOW_SYSTEM:STRING=XCB .
          cmake --build . --config Release
          cmake --install .

      - name: Creating Appropriate Directories
        run: |
          mkdir bin
          mv StrToHash bin
          mkdir lib
          mv libEHS.a lib

      - name: Zipping Binaries
        run: zip -r ehs-linux-amd64.zip include bin lib docs LICENSE RADME.md

      - uses: https://github.com/actions/setup-go@v4
        with:
          go-version: '>=1.20.1'

      - name: Use Go Action
        id: use-go-action
        uses: https://gitea.com/actions/release-action@main
        with:
          files: |-
            ehs-linux-amd64.zip
          api_key: '${{secrets.RELEASE_TOKEN}}'

  Linux-AARCH64-Build:
    runs-on: linux-aarch64
    steps:
      - name: Check out repository code
        uses: actions/checkout@v3

      - name: Installing Dependencies
        run: sudo apt install -y doxygen zip libasound2-dev libxcb1-dev libxcb-xinput-dev libxcb-cursor-dev

      - name: Generating Documentation
        run: |
          doxygen ehs-docs-config.doxyfile

      - name: Building/Compiling/Installing Project
        run: |
          cd ${{ gitea.workspace }}
          cmake -DCMAKE_BUILD_TYPE=Release -DLINUX_WINDOW_SYSTEM:STRING=XCB .
          cmake --build . --config Release
          cmake --install .

      - name: Creating Appropriate Directories
        run: |
          mkdir bin
          mv StrToHash bin
          mkdir lib
          mv libEHS.a lib

      - name: Zipping Binaries
        run: zip -r ehs-linux-aarch64.zip include bin lib docs LICENSE README.md

      - uses: https://github.com/actions/setup-go@v4
        with:
          go-version: '>=1.20.1'

      - name: Use Go Action
        id: use-go-action
        uses: https://gitea.com/actions/release-action@main
        with:
          files: |-
            ehs-linux-aarch64.zip
          api_key: '${{secrets.RELEASE_TOKEN}}'