name: "Lint documentation"

on:
  workflow_dispatch:
  push:
    branches: [ main, linux ]
    paths:
      - '**.md'
      - '.github/workflows/lint-docs.yml'
  pull_request:
    branches: [ main, linux ]
    paths:
      - '**.md'
      - '.github/workflows/lint-docs.yml'

jobs:
  lint-markdown:
    name: Lint markdown files
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - uses: DavidAnson/markdownlint-cli2-action@07035fd053f7be764496c0f8d8f9f41f98305101
        with:
          globs: |
            "**/*.md"
            "!.github/ISSUE_TEMPLATE"

  check-links:
    name: Check for broken links
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - name: Run link checker
        # For any troubleshooting, see:
        # https://github.com/lycheeverse/lychee/blob/master/docs/TROUBLESHOOTING.md
        uses: lycheeverse/lychee-action@a8c4c7cb88f0c7386610c35eb25108e448569cb0
        with:
          # user-agent: if a user agent is not specified, some websites (e.g.
          # GitHub Docs) return HTTP errors which Lychee will interpret as
          # a broken link.
          # no-progress: do not show progress bar. Recommended for
          # non-interactive shells (e.g. for CI)
          # inputs: by default (.), this action checks files matching the
          # patterns: './**/*.md' './**/*.html'
          args: >-
            --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"
            --no-progress .
          fail: true
        env:
          # A token is used to avoid GitHub rate limiting. A personal token with
          # no extra permissions is enough to be able to check public repos
          # See: https://github.com/lycheeverse/lychee#github-token
          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
