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 - 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 - 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