name: Lint Code on: pull_request: push: branches: [main] permissions: contents: read jobs: changes: runs-on: ubuntu-latest permissions: pull-requests: read outputs: code: ${{ steps.diff.outputs.code }} steps: - id: diff env: GH_TOKEN: ${{ github.token }} run: | if [ "${{ github.event_name }}" = "push" ]; then echo "code=true" >> "$GITHUB_OUTPUT" exit 0 fi FILES=$(gh api "repos/${{ github.repository }}/pulls/${{ github.event.number }}/files" \ --paginate --jq '.[].filename') CODE=$(echo "$FILES" | grep -vcE '\.md$|^docs/|^src-tauri/|^CHANGELOG\.md$|^LICENSE$|\.github/workflows/(build-desktop|docker-publish)\.yml$' || echo 0) echo "code=$( [ "$CODE" -gt 0 ] && echo true || echo false )" >> "$GITHUB_OUTPUT" biome: needs: changes if: needs.changes.outputs.code == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '22' cache: 'npm' - run: npm ci - run: npm run lint:unicode - run: npm run lint - run: npm run lint:boundaries - run: npm run lint:api-contract - name: Markdown lint run: npm run lint:md - name: Version sync check run: npm run version:check