name: Build Rust

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - "**"
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  rust:
    name: Cargo Test
    runs-on: [self-hosted, linux, x86_64, burrow-forge]
    steps:
      - name: Checkout
        shell: bash
        run: |
          set -euo pipefail
          repo_url="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git"
          if [ ! -d .git ]; then
            git init .
          fi
          if git remote get-url origin >/dev/null 2>&1; then
            git remote set-url origin "${repo_url}"
          else
            git remote add origin "${repo_url}"
          fi
          git fetch --force --tags origin "${GITHUB_SHA}"
          git checkout --force --detach FETCH_HEAD
          git clean -ffdqx

      - name: Test
        shell: bash
        run: |
          set -euo pipefail
          nix develop .#ci -c cargo test --workspace --all-features
