# Copyright 2019-2023 Tauri Programme within The Commons Conservancy # SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: MIT name: Lint Rust on: push: branches: - v1 - v2 paths: - '.github/workflows/lint-rust.yml' - 'plugins/*/src/**' - '!plugins/*/src/api-iife.js' - '**/Cargo.toml' pull_request: branches: - v1 - v2 paths: - '.github/workflows/lint-rust.yml' - 'plugins/*/src/**' - '!plugins/*/src/api-iife.js' - '**/Cargo.toml' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: changes: runs-on: ubuntu-latest permissions: pull-requests: read outputs: packages: ${{ steps.filter.outputs.changes }} steps: - uses: actions/checkout@v4 - uses: dorny/paths-filter@v2 id: filter with: filters: | tauri-plugin-autostart: - .github/workflows/lint-rust.yml - plugins/autostart/** tauri-plugin-cli: - .github/workflows/lint-rust.yml - plugins/cli/** tauri-plugin-clipboard-manager: - .github/workflows/lint-rust.yml - plugins/clipboard-manager/** tauri-plugin-deep-link: - .github/workflows/lint-rust.yml - plugins/deep-link/** tauri-plugin-dialog: - .github/workflows/lint-rust.yml - plugins/dialog/** - plugins/fs/** tauri-plugin-fs: - .github/workflows/lint-rust.yml - plugins/fs/** tauri-plugin-geolocation: - .github/workflows/lint-rust.yml - plugins/geolocation/** tauri-plugin-global-shortcut: - .github/workflows/lint-rust.yml - plugins/global-shortcut/** tauri-plugin-haptics: - .github/workflows/lint-rust.yml - plugins/haptics/** tauri-plugin-http: - .github/workflows/lint-rust.yml - plugins/http/** - plugins/fs/** tauri-plugin-localhost: - .github/workflows/lint-rust.yml - plugins/localhost/** tauri-plugin-log: - .github/workflows/lint-rust.yml - plugins/log/** tauri-plugin-notification: - .github/workflows/lint-rust.yml - plugins/notification/** tauri-plugin-os: - .github/workflows/lint-rust.yml - plugins/os/** tauri-plugin-persisted-scope: - .github/workflows/lint-rust.yml - plugins/persisted-scope/** - plugins/fs/** tauri-plugin-positioner: - .github/workflows/lint-rust.yml - plugins/positioner/** tauri-plugin-process: - .github/workflows/lint-rust.yml - plugins/process/** tauri-plugin-shell: - .github/workflows/lint-rust.yml - plugins/shell/** tauri-plugin-single-instance: - .github/workflows/lint-rust.yml - plugins/single-instance/** tauri-plugin-sql: - .github/workflows/lint-rust.yml - plugins/sql/** tauri-plugin-store: - .github/workflows/lint-rust.yml - plugins/store/** tauri-plugin-stronghold: - .github/workflows/lint-rust.yml - plugins/stronghold/** tauri-plugin-updater: - .github/workflows/lint-rust.yml - plugins/updater/** tauri-plugin-upload: - .github/workflows/lint-rust.yml - plugins/upload/** tauri-plugin-websocket: - .github/workflows/lint-rust.yml - plugins/websocket/** tauri-plugin-window-state: - .github/workflows/lint-rust.yml - plugins/window-state/** clippy: needs: changes if: ${{ needs.changes.outputs.packages != '[]' && needs.changes.outputs.packages != '' }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: package: ${{ fromJSON(needs.changes.outputs.packages) }} steps: - uses: actions/checkout@v4 - name: install webkit2gtk run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev - name: Install clippy with stable toolchain uses: dtolnay/rust-toolchain@stable with: components: clippy - uses: Swatinem/rust-cache@v2 - name: clippy ${{ matrix.package }} if: matrix.package != 'tauri-plugin-sql' run: cargo clippy --package ${{ matrix.package }} --all-targets -- -D warnings - name: clippy ${{ matrix.package }} mysql if: matrix.package == 'tauri-plugin-sql' run: cargo clippy --package ${{ matrix.package }} --all-targets --no-default-features --features mysql -- -D warnings - name: clippy ${{ matrix.package }} postgres if: matrix.package == 'tauri-plugin-sql' run: cargo clippy --package ${{ matrix.package }} --all-targets --no-default-features --features postgres -- -D warnings