name: actionlint

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

on:
  workflow_dispatch:
  pull_request:
    branches:
      - develop
      - dev-[2-9][0-9].[0-9][0-9].x
      - master
      - "[2-9][0-9].[0-9][0-9].x"
      - hotfix-*
      - release-*
    paths:
      - ".github/**"
      - "**/packaging/*.ya?ml"

jobs:
  action-lint:
    runs-on: ubuntu-24.04
    steps:
      - name: Checkout sources
        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      - name: Download actionlint
        id: get_actionlint
        run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/v1.7.1/scripts/download-actionlint.bash)
        shell: bash

      - name: Check workflow files
        env:
          SHELLCHECK_OPTS: "--severity=error"
        run: |
          ${{ steps.get_actionlint.outputs.executable }} \
            -ignore 'label "ubuntu-24.04" is unknown' \
            -ignore 'label "(common|collect|collect-arm64)" is unknown' \
            -ignore 'label "veracode" is unknown' \
            -ignore '"github.head_ref" is potentially untrusted' \
            -pyflakes= \
            -color
        shell: bash

  yaml-lint:
    runs-on: ubuntu-24.04
    steps:
      - name: Checkout sources
        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1
        with:
          python-version: '3.12'

      - name: Install Yaml
        run: pip install yamllint==1.35.1

      - name: Add Yaml Lint Rules
        run: |
          cat <<EOF >>./yamllint_rules.yml
          extends: default

          rules:
            document-start: disable
            line-length: disable
            truthy:
              check-keys: false
              level: error
            indentation:
              spaces: 2
              indent-sequences: true
              check-multi-line-strings: false
            comments:
              ignore-shebangs: true
              min-spaces-from-content: 1
            comments-indentation: disable
            new-lines:
              type: unix
            new-line-at-end-of-file: enable
          EOF

      - name: Lint YAML files
        run: yamllint -c ./yamllint_rules.yml ./.github/actions/ ./.github/workflows/ ./**/packaging/
