---
name: Git - Check commit message style
on:
  push:
  workflow_dispatch:

jobs:
  check-commit-message-style:
    name: Check commit message style
    runs-on: ubuntu-latest
    steps:
      # Make sure there are no whitespaces other than space, tab and newline in a commit message.
      - name: Check for unicode whitespaces
        uses: gsactions/commit-message-checker@v2
        with:
          # Pattern matches strings not containing weird unicode whitespace/separator characters
          # \P{Z} = All non-whitespace characters (the u-flag is needed to enable \P{Z})
          # [ \t\n] = Allowed whitespace characters
          pattern: '^(\P{Z}|[ \t\n])+$'
          flags: 'u'
          error: 'Detected unicode whitespace character in commit message.'
          checkAllCommitMessages: 'true' # optional: this checks all commits associated with a pull request
          accessToken: ${{ secrets.GITHUB_TOKEN }} # only required if checkAllCommitMessages is true

      # Git commit messages should follow these guidelines: https://cbea.ms/git-commit/
      - name: Check against guidelines
        uses: mristin/opinionated-commit-message@f3b9cec249cabffbae7cd564542fd302cc576827 #v3.1.1
        with:
          # Commit messages are allowed to be subject only, no body
          allow-one-liners: 'true'
          # This action defaults to 50 char subjects, but 72 is fine.
          max-subject-line-length: '72'
