name: Run formatter, linter and tests on: merge_group: pull_request: push: branches: - main env: CARGO_TERM_COLOR: always jobs: rustfmt: timeout-minutes: 5 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@1.76.0 with: components: rustfmt - name: Check Rust formatting run: cargo fmt --all -- --check lint-and-test: timeout-minutes: 30 strategy: max-parallel: 1 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/cache@v4 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-lint-and-test-${{ hashFiles('**/Cargo.toml') }} - uses: dtolnay/rust-toolchain@1.76 with: components: clippy - name: Install Linux dependencies run: | sudo apt-get update sudo apt-get install -y --no-install-recommends \ libasound2-dev \ libudev-dev \ git - name: Install JS dependencies run: npm ci - name: Ensure unambiguous `main` if: github.ref != 'refs/heads/main' run: | git remote set-branches origin main git fetch --depth 1 origin main git branch main origin/main - name: Run Nx-configured `lint` and `test` targets run: npx nx affected -t lint test --base=main --head=HEAD