name: Lint on: pull_request: types: [opened, synchronize, reopened] permissions: contents: read # to fetch code (actions/checkout) concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: fmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: nightly components: rustfmt - run: cargo fmt --all -- --check clippy: permissions: checks: write # to add clippy checks to PR diffs runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: { components: clippy } - uses: giraffate/clippy-action@v1 with: reporter: 'github-pr-check' github_token: ${{ secrets.GITHUB_TOKEN }} clippy_flags: --workspace --all-features --tests --examples --bins -- -Dclippy::todo lint-docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: { components: rust-docs } - name: Check for broken intra-doc links env: { RUSTDOCFLAGS: "-D warnings" } run: cargo doc --no-deps --all-features --workspace public-api-diff: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: ref: ${{ github.base_ref }} - uses: actions/checkout@v3 - uses: actions-rust-lang/setup-rust-toolchain@v1 # temp: unpin once https://github.com/rust-lang/rust/issues/113152 is fixed with: { toolchain: nightly-2023-06-28 } - uses: taiki-e/cache-cargo-install-action@v1 with: { tool: cargo-public-api } - name: generate API diff run: | for f in $(find -mindepth 2 -maxdepth 2 -name Cargo.toml); do cargo public-api --manifest-path "$f" diff ${{ github.event.pull_request.base.sha }}..${{ github.sha }} done