name: Rust CI on: workflow_dispatch: push: branches: - '**' paths: - '**.rs' - '**.toml' - 'rust/**' pull_request: paths: - 'rust/**' jobs: # Check lints with clippy clippy: name: cargo clippy runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # Ensure clippy is installed - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: 1.91.1 components: clippy - name: Clippy Check uses: clechasseur/rs-clippy-check@v4 with: # We do not run clippy on plugins. args: -p binaryninja --all-features # Check formatting with rustfmt formatting: name: cargo fmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # Ensure rustfmt is installed - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: 1.91.1 components: rustfmt - name: Rustfmt Check uses: actions-rust-lang/rustfmt@v1 # Check spelling with typos spelling: name: typos runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Typo Check uses: crate-ci/typos@v1.29.4 with: files: ./rust # Check licensing and produce a list of licenses licensing: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install cargo-about uses: baptiste0928/cargo-install@v3 with: crate: cargo-about version: "0.6.6" - name: Run license check run: cargo about generate about.hbs > license.html - name: Archive license file uses: actions/upload-artifact@v4 with: name: license path: license.html