name: Lint on: pull_request: types: [opened, synchronize] branches-ignore: - 'l10n_master' - 'cf-pages' paths-ignore: - '.github/workflows/**' push: branches: - 'main' - 'rc' - 'hotfix-rc-*' paths-ignore: - '.github/workflows/**' workflow_dispatch: inputs: {} defaults: run: shell: bash permissions: contents: read jobs: lint: name: Lint runs-on: ubuntu-22.04 steps: - name: Checkout repo uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 with: persist-credentials: false - name: Lint filenames (no capital characters) run: | find . -type f,d -name "*[[:upper:]]*" \ ! -path "./node_modules/*" \ ! -path "./coverage/*" \ ! -path "*/dist/*" \ ! -path "*/build/*" \ ! -path "*/target/*" \ ! -path "./.git/*" \ ! -path "*/.DS_Store" \ ! -path "*/*locales/*" \ ! -path "./.github/*" \ ! -path "*/README.md" \ ! -path "*/Cargo.toml" \ ! -path "*/Cargo.lock" \ ! -path "./apps/desktop/macos/*" \ ! -path "*/CLAUDE.md" \ ! -path "*/SKILL.md" \ > tmp.txt diff <(sort .github/whitelist-capital-letters.txt) <(sort tmp.txt) - name: Get Node Version id: retrieve-node-version run: | NODE_NVMRC=$(cat .nvmrc) NODE_VERSION=${NODE_NVMRC/v/''} echo "node_version=$NODE_VERSION" >> "$GITHUB_OUTPUT" - name: Set up Node uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' node-version: ${{ steps.retrieve-node-version.outputs.node_version }} - name: Install Node dependencies run: npm ci - name: Lint unowned dependencies run: npm run lint:dep-ownership - name: Lint sdk-internal versions run: npm run lint:sdk-internal-versions - name: Run linter run: npm run lint rust: name: Run Rust lint on ${{ matrix.os }} runs-on: ${{ matrix.os || 'ubuntu-24.04' }} strategy: matrix: os: - ubuntu-24.04 - macos-14 - windows-2022 steps: - name: Checkout repo uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 with: persist-credentials: false - name: Install Rust uses: dtolnay/rust-toolchain@6d653acede28d24f02e3cd41383119e8b1b35921 # stable with: toolchain: stable components: rustfmt, clippy - name: Install Rust nightly uses: dtolnay/rust-toolchain@6d653acede28d24f02e3cd41383119e8b1b35921 # stable with: toolchain: nightly components: rustfmt - name: Check Rust version run: rustup --version - name: Cache cargo registry uses: Swatinem/rust-cache@f0deed1e0edfc6a9be95417288c0e1099b1eeec3 # v2.7.7 - name: Run cargo fmt working-directory: ./apps/desktop/desktop_native run: cargo +nightly fmt --check - name: Run Clippy working-directory: ./apps/desktop/desktop_native run: cargo clippy --all-features --tests env: RUSTFLAGS: "-D warnings" - name: Install cargo-sort run: cargo install cargo-sort --locked --git https://github.com/DevinR528/cargo-sort.git --rev f5047967021cbb1f822faddc355b3b07674305a1 - name: Cargo sort working-directory: ./apps/desktop/desktop_native run: cargo sort --workspace --check - name: Install cargo-udeps run: cargo install cargo-udeps --version 0.1.57 --locked - name: Cargo udeps working-directory: ./apps/desktop/desktop_native run: cargo +nightly udeps --workspace --all-features --all-targets - name: Install cargo-deny uses: taiki-e/install-action@81ee1d48d9194cdcab880cbdc7d36e87d39874cb # v2.62.45 with: tool: cargo-deny@0.18.5 - name: Run cargo deny working-directory: ./apps/desktop/desktop_native run: cargo deny --log-level error --all-features check all