ash-flare 2.3.3

Fault-tolerant supervision trees for Rust with distributed capabilities inspired by Erlang/OTP
Documentation
name: Conventional Commits

on:
  pull_request:
    branches: [ "master", "main" ]
    types: [opened, synchronize, reopened, edited]

permissions:
  contents: read
  issues: write
  pull-requests: write

jobs:
  commitlint:
    name: Validate PR Title
    runs-on: ubuntu-latest
    if: github.base_ref == 'master' || github.base_ref == 'main'
    
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
      
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 'lts/*'
      
      - name: Install commitlint
        run: npm install --save-dev @commitlint/cli@latest @commitlint/config-conventional@latest
      
      - name: Validate PR title
        id: commitlint
        continue-on-error: true
        run: echo "${{ github.event.pull_request.title }}" | npx commitlint --config .commitlintrc.json --verbose
      
      - name: Add warning label
        if: steps.commitlint.outcome != 'success'
        uses: actions/github-script@v7
        with:
          script: |
            github.rest.issues.addLabels({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              labels: ['pr-title-warning']
            });
      
      - name: Remove warning label
        if: steps.commitlint.outcome == 'success'
        uses: actions/github-script@v7
        with:
          script: |
            try {
              await github.rest.issues.removeLabel({
                issue_number: context.issue.number,
                owner: context.repo.owner,
                repo: context.repo.repo,
                name: 'pr-title-warning'
              });
            } catch (error) {
              // Label doesn't exist, ignore
            }