name: docs

on:
  pull_request:
    paths:
      - "docs/**"
      - "*.md"
    branches:
      - main
      - 3.x

# Remove default permissions of GITHUB_TOKEN for security
# https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs
permissions: {}

jobs:
  link-checker:
    runs-on: ubuntu-latest
    steps:
      # Cache lychee results (e.g. to avoid hitting rate limits)
      - name: Restore lychee cache
        uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
        with:
          path: .lycheecache
          key: cache-lychee-${{ github.sha }}
          restore-keys: cache-lychee-

      # check links with Lychee
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

      - name: Lychee link checker
        uses: lycheeverse/lychee-action@f796c8b7d468feb9b8c0a46da3fac0af6874d374 # for v1.8.0
        with:
          # arguments with file types to check
          args: >-
            '-c=lychee.toml'
            './docs/**/*.md'
            './docs/**/*.html'
            './packages/*/src/**/*.ts'
            './packages/*/src/**/*.js'
            './packages/*/src/**/*.md'
          # fail the action on broken links
          fail: true
        env:
          # to be used in case rate limits are surpassed
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
