name: CI

on:
  push:
  pull_request:

jobs:
  shellcheck:
    name: Shellcheck
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install shellcheck
        run: sudo apt-get update && sudo apt-get install -y shellcheck
      - name: Run shellcheck on shell scripts
        run: |
          files=$(git ls-files '*.sh' || true)
          if [ -z "$files" ]; then
            echo "No shell scripts to check"
            exit 0
          fi
          echo "$files"
          shellcheck $files

  syntax:
    name: Syntax & EOL checks
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Fail on CRLF in scripts
        run: |
          CRLF_FILES=$(git ls-files '*.sh' | xargs -r grep -Il $'\r' || true)
          if [ -n "$CRLF_FILES" ]; then
            echo "CRLF found in the following files:"; echo "$CRLF_FILES";
            exit 1
          fi
          echo "No CRLF in shell scripts"
      - name: Bash syntax-check
        run: |
          for f in $(git ls-files '*.sh'); do
            echo "Checking $f";
            bash -n "$f";
          done

  preview-runner:
    name: Preview installer scripts
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Bash syntax-check run_installers
        run: bash -n run_installers.sh
      - name: Preview run_installers (safe)
        run: ./run_installers.sh --preview

  windows-preview:
    name: PowerShell preview
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - name: Preview PowerShell wrapper
        shell: pwsh
        run: |
          ./run_installers.ps1 -Preview
