name: Feature Matrix on: push: branches: [main] paths: - "Cargo.toml" - "Cargo.lock" - "src/**" schedule: - cron: "30 4 * * 1" # Weekly Monday 4:30am UTC workflow_dispatch: concurrency: group: feature-matrix-${{ github.event.pull_request.number || github.sha }} cancel-in-progress: true permissions: contents: read env: CARGO_TERM_COLOR: always jobs: feature-check: name: Check (${{ matrix.name }}) runs-on: blacksmith-2vcpu-ubuntu-2404 timeout-minutes: 30 strategy: fail-fast: false matrix: include: - name: no-default-features args: --no-default-features install_libudev: false - name: all-features args: --all-features install_libudev: true - name: hardware-only args: --no-default-features --features hardware install_libudev: false - name: browser-native args: --no-default-features --features browser-native install_libudev: false steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable with: toolchain: 1.92.0 - uses: useblacksmith/rust-cache@f53e7f127245d2a269b3d90879ccf259876842d5 # v3 with: key: features-${{ matrix.name }} - name: Install Linux system dependencies for all-features if: matrix.install_libudev run: | sudo apt-get update sudo apt-get install -y --no-install-recommends libudev-dev pkg-config - name: Check feature combination run: cargo check --locked ${{ matrix.args }} - name: Test feature combination run: cargo test --locked ${{ matrix.args }}