name: "Shellcheck"

on:
  pull_request:
    branches: [ master ]
    paths:
      - '**/*.sh'
  workflow_dispatch:

jobs:
  shellcheck:
    name: Shellcheck
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repo
        uses: actions/checkout@v4

      - name: Check scripts (1/2)
        run: |
          shellcheck -V
          rm -f sc.log
          find . -path '*/bin/scripts/lib/*' -prune -o -name '*.sh' -print -exec bash -c 'shellcheck -f gcc -e SC2155 {} | tee -a sc.log' \;
          # SC2155: Declare and assign separately to avoid masking return values

      - name: Check scripts (2/2)
        run: |
          find bin/scripts/lib -name '*.sh' -not -name 'i_m*' -print -exec bash -c 'shellcheck -f gcc -e SC2034 {} | tee -a sc.log' \;
          # SC2034: ... appears unused. Verify use (or export if used externally)

      - name: Check for issues
        run: |
          num=$(wc -l < sc.log)
          if [ "$num" -gt 0 ]; then
            echo "Found $num messages from ShellCheck - please fix them"
            exit 1
          fi
          echo "Found $num messages from ShellCheck, all good!"
