name: shell-and-powershell-ci

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  shell-check:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install shellcheck
        run: sudo apt-get update && sudo apt-get install -y shellcheck

      - name: Run shellcheck
        run: |
          find . -type f -name "*.sh" -print0 | xargs -0 -r shellcheck -e SC1007,SC1090,SC2016

  powershell-analyzer:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install PSScriptAnalyzer
        shell: pwsh
        run: |
          Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
          Install-Module PSScriptAnalyzer -Scope CurrentUser -Force

      - name: Analyze PowerShell scripts
        shell: pwsh
        run: |
          $targets = @(
            "windows/*.ps1",
            "windows/*.psm1",
            "windows/*.psd1"
          )
          $issues = $targets | ForEach-Object {
            Invoke-ScriptAnalyzer -Path $_ -Recurse -Severity Error
          }
          if ($issues) {
            $issues | Format-Table -AutoSize
            throw "PSScriptAnalyzer detected issues."
          }
