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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 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" \ > 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Check Rust version run: rustup --version - name: Run cargo fmt working-directory: ./apps/desktop/desktop_native run: cargo 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-deny uses: taiki-e/install-action@v2 with: tool: cargo-deny - name: Run cargo deny working-directory: ./apps/desktop/desktop_native run: cargo deny --log-level error --all-features check all