gol 0.1.13

Conway's game of life in OpenGL.
Documentation
name: Release
on:
  push:
    tags:
      - "[0-9]+.[0-9]+.[0-9]+"
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - env:
          GH_TOKEN: ${{ github.token }}
        run: gh release create ${{ github.ref_name }}
  assets:
    needs: release
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        # Include all "Tier 1 with Host Tools" targets and "Tier 2 with Host Tools" targets for Windows and macOS,
        # excluding *-pc-windows-msvc, which requires cross-toolchains. Goal is one option per OS per architecture.
        # https://doc.rust-lang.org/rustc/platform-support.html
        # https://github.com/cross-rs/cross#supported-targets
        # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
        include:
          # 32-bit (i686)
          # i686-apple-darwin is Tier 3.
          - build: linux-32-bit
            os: ubuntu-latest
            target: i686-unknown-linux-gnu
            command: cross
          - build: windows-32-bit
            os: ubuntu-latest
            target: i686-pc-windows-gnu
            command: cross
          # 64-bit (x86)
          - build: linux-64-bit
            os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
            command: cross
          - build: macos-64-bit
            os: macos-latest
            target: x86_64-apple-darwin
            command: cargo
          - build: windows-64-bit
            os: ubuntu-latest
            target: x86_64-pc-windows-gnu
            command: cross
          # 64-bit (ARM)
          # aarch64-pc-windows-gnullvm is Tier 3.
          - build: macos-arm
            os: macos-latest
            target: aarch64-apple-darwin
            command: cargo
          - build: linux-arm
            os: ubuntu-latest
            target: aarch64-unknown-linux-gnu
            command: cross
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@nightly
        with:
          targets: ${{ matrix.target }}
      - run: cargo install cross --git https://github.com/cross-rs/cross
      - run: ${{ matrix.command }} build --release --target ${{ matrix.target }}
      # 7z is available on all runners.
      # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#preinstalled-software
      - name: Create archive
        id: archive
        shell: bash
        run: |
          DIRECTORY="gol-${{ github.ref_name }}-${{ matrix.build }}"
          if [[ "${{ matrix.target }}" =~ "-pc-windows-" ]]; then
            SUFFIX=".exe"
          else
            SUFFIX=""
          fi
          mkdir "$DIRECTORY"
          cp LICENCE README.MD "target/${{ matrix.target }}/release/gol$SUFFIX" "$DIRECTORY"
          7z a "$DIRECTORY.zip" "$DIRECTORY"
          echo "path=$DIRECTORY.zip" >> $GITHUB_OUTPUT
      - env:
          GH_TOKEN: ${{ github.token }}
        run: gh release upload ${{ github.ref_name }} ${{ steps.archive.outputs.path }}