wireframe 0.3.0

Simplify building servers and clients for custom binary protocols.
Documentation
name: CI

on:
  pull_request:
    branches: [main]
  push:
    branches: [main]

jobs:
  build-test:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    env:
      CARGO_TERM_COLOR: always
      BUILD_PROFILE: debug
      WHITAKER_INSTALLER_VERSION: '0.2.1'
    steps:
      - uses: actions/checkout@v5
      - name: Setup Rust
        uses: leynos/shared-actions/.github/actions/setup-rust@aebb3f5b831102e2a10ef909c83d7d50ea86c332
      - name: Format
        run: make check-fmt
      - name: Cache Whitaker installer
        uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
        with:
          path: |
            ~/.cargo/bin/whitaker-installer
            ~/.cache/cargo-binstall
          key: whitaker-installer-${{ runner.os }}-${{ runner.arch }}-${{ env.WHITAKER_INSTALLER_VERSION }}
      - name: Install Whitaker
        run: |
          if command -v whitaker-installer >/dev/null 2>&1; then
            echo "whitaker-installer already present; skipping cargo binstall"
          else
            cargo binstall --no-confirm whitaker-installer@${{ env.WHITAKER_INSTALLER_VERSION }}
          fi
          whitaker-installer
      - name: Lint
        run: make lint
      - name: Test and Measure Coverage
        uses: leynos/shared-actions/.github/actions/generate-coverage@aebb3f5b831102e2a10ef909c83d7d50ea86c332
        with:
          output-path: lcov.info
          format: lcov
      - name: Upload coverage data to CodeScene
        env:
          CS_ACCESS_TOKEN: ${{ secrets.CS_ACCESS_TOKEN }}
        if: ${{ env.CS_ACCESS_TOKEN }}
        uses: leynos/shared-actions/.github/actions/upload-codescene-coverage@aebb3f5b831102e2a10ef909c83d7d50ea86c332
        
        with:
          format: lcov
          access-token: ${{ env.CS_ACCESS_TOKEN }}
          installer-checksum: ${{ vars.CODESCENE_CLI_SHA256 }}