name: CI on: push: branches: [main] pull_request: branches: [main] env: CARGO_TERM_COLOR: always RUSTFLAGS: --deny warnings RUSTDOCFLAGS: --deny warnings jobs: # Run tests. test: name: Tests runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - name: Install dependencies run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev - name: Populate target directory from cache uses: Leafwing-Studios/cargo-cache@v2 with: sweep-cache: true - name: Run tests run: | cargo test --locked --workspace --all-features --all-targets # Run clippy lints. clippy: name: Clippy runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Install dependencies run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev - name: Populate target directory from cache uses: Leafwing-Studios/cargo-cache@v2 with: sweep-cache: true - name: Run clippy lints run: cargo clippy --locked --workspace --all-features -- --deny warnings # Check formatting. format: name: Format runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: Run cargo fmt run: cargo fmt --all -- --check # Check documentation. doc: name: Docs runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - name: Install dependencies run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev - name: Populate target directory from cache uses: Leafwing-Studios/cargo-cache@v2 with: sweep-cache: true - name: Check documentation run: cargo doc --locked --workspace --all-features --document-private-items --no-deps