name: Shellcheck

on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:
  schedule:
    - cron: "5 1 * * *"

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

    steps:
    - uses: actions/checkout@v4

    - name: Get changed files
      id: changes
      run: |
        if ${{ github.event_name == 'pull_request' }}; then
          echo "files=$(git diff --name-only -r HEAD^1 HEAD | xargs)" >> $GITHUB_OUTPUT
        else
          echo "files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | xargs)" >> $GITHUB_OUTPUT
        fi

    - name: Run ShellCheck
      if: steps.changes.outputs.files != ''
      run: |
        echo "${{ steps.changes.outputs.files }}" | xargs shellcheck