git-bot-feedback 0.5.2

A library designed for CI tools that posts comments on a Pull Request.
Documentation
name: pre-commit

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

permissions: {}

jobs:
  all-files:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          persist-credentials: false
      - uses: actions/setup-python@v6
        id: python-setup
        with:
          python-version: '3.x'
      - name: Cache pre-commit environments
        uses: actions/cache@v5
        with:
          path: "~/.cache/pre-commit"
          key: pre-commit-${{ steps.python-setup.outputs.python-version }}-${{ hashFiles('.pre-commit-config.yaml') }}
      - run: pipx run pre-commit run --show-diff-on-failure --color=always --all-files

  lint-rust:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          persist-credentials: false
      - name: Setup Rust
        run: rustup update --no-self-update
      - name: Cache deps
        uses: actions/cache@v5
        with:
          path: ~/.cargo
          key: cargo-lib-${{ hashFiles('lib/src/**', 'lib/Cargo.toml') }}
      - name: Install cargo-binstall
        uses: cargo-bins/cargo-binstall@0b24824336e2b3800b0f89d9e08b2c08bfa3dcdd # v1.17.9
      - name: Install nur
        env:
          GITHUB_TOKEN: ${{ github.token }}
        run: cargo binstall -y nur
      - run: nur lint --check

  check-pr-title:
    name: Check PR title
    if: github.event_name == 'pull_request'
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v6
        with:
          persist-credentials: false
      - run: rustup update --no-self-update
      - name: Install cargo-binstall
        uses: cargo-bins/cargo-binstall@0b24824336e2b3800b0f89d9e08b2c08bfa3dcdd # v1.17.9
      - name: Install committed
        env:
          GITHUB_TOKEN: ${{ github.token }}
        run: cargo binstall -y committed
      - name: Get PR title
        id: get-title
        env:
          GH_REPO: ${{ github.repository }}
          GH_TOKEN: ${{ github.token }}
          PR_NUMBER: ${{ github.event.pull_request.number }}
        run: |-
          pr_title=$(gh pr view "${PR_NUMBER}" --repo "${GH_REPO}" --json "title" -q ".title")
          echo "title=${pr_title}" >> "${GITHUB_OUTPUT}"
      - name: conventional-commit
        env:
          PR_TITLE: "${{ steps.get-title.outputs.title }}"
        run: echo "${PR_TITLE}" | committed --config .config/committed.toml --commit-file -
      - uses: actions/setup-node@v6
        with:
          node-version: latest
      - name: spell check
        env:
          PR_TITLE: "${{ steps.get-title.outputs.title }}"
        run: echo "${PR_TITLE}" | npx cspell-cli lint stdin

  lint-ci:
    name: Lint CI workflows
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          persist-credentials: false
      - uses: actions/setup-python@v6
        id: python-setup
        with:
          python-version: '3.x'
      - name: Run zizmor
        env:
          GH_TOKEN: ${{ github.token }}
        run: >-
          pipx run
          zizmor --format github --color always .github/workflows