# 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/**" - "**/Cargo.toml" pull_request: branches: - v1 - v2 paths: - ".github/workflows/lint-rust.yml" - "plugins/*/src/**" - "**/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@v3 - uses: dorny/paths-filter@v2 id: filter with: filters: | tauri-plugin-app: - .github/workflows/lint-rust.yml - plugins/app/** tauri-plugin-authenticator: - .github/workflows/lint-rust.yml - plugins/authenticator/** tauri-plugin-autostart: - .github/workflows/lint-rust.yml - plugins/autostart/** tauri-plugin-cli: - .github/workflows/lint-rust.yml - plugins/cli/** tauri-plugin-clipboard: - .github/workflows/lint-rust.yml - plugins/clipboard/** tauri-plugin-dialog: - .github/workflows/lint-rust.yml - plugins/dialog/** - plugins/fs/** tauri-plugin-fs: - .github/workflows/lint-rust.yml - plugins/fs/** tauri-plugin-global-shortcut: - .github/workflows/lint-rust.yml - plugins/global-shortcut/** 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: - .github/workflows/lint-rust.yml - plugins/window/** 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@v3 - name: install webkit2gtk and libudev for [authenticator] run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libudev-dev - name: Install clippy with stable toolchain uses: dtolnay/rust-toolchain@stable with: components: clippy - uses: Swatinem/rust-cache@v2 - name: create dummy dist working-directory: examples/api run: mkdir dist - name: clippy ${{ matrix.package }} if: matrix.package != 'tauri-plugin-sql' run: cargo clippy --package ${{ matrix.package }} --all-targets -- -D warnings - name: clippy ${{ matrix.package }} --all-features if: ${{ !contains(fromJSON('["tauri-plugin-http", "tauri-plugin-upload", "tauri-plugin-updater", "tauri-plugin-websocket", "tauri-plugin-sql"]'), matrix.package) }} run: cargo clippy --package ${{ matrix.package }} --all-targets --all-features -- -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 fmt: runs-on: ubuntu-latest strategy: fail-fast: false steps: - uses: actions/checkout@v3 - name: Install rustfmt with nightly toolchain uses: dtolnay/rust-toolchain@nightly with: components: rustfmt - name: Check formatting run: cargo fmt --all -- --check