---
name: ⚙️ Windows Install

on:
  pull_request:
    paths:
      - "lib/sh/**"
      - "lib/zsh/**"
      - "tests/**"
      - ".github/workflows/win-install.yml"
  push:
    paths:
      - "lib/sh/**"
      - "lib/zsh/**"
      - "tests/**"
      - ".github/workflows/win-install.yml"
  workflow_dispatch: {}

permissions:
  contents: read

jobs:
  shellcheck:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - name: ☑️ ShellCheck
        uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # 2.0.0
        with:
          scandir: "./lib/sh"
  run-install:
    runs-on: windows-latest
    timeout-minutes: 30
    needs: [shellcheck]
    concurrency:
      group: ci-${{ github.workflow }}-${{ github.ref }}
      cancel-in-progress: false
    steps:
      - name: 🪟 Set CRLF (Windows)
        run: |
          git config --global core.autocrlf input
          git config --global --add safe.directory /cygdrive/d/a/src/src
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - name: 🪟 Dependencies (Windows)
        uses: egor-tensin/setup-cygwin@d2c752bab416d4b0662591bd366fc2686297c82d # v4.0.1
        with:
          platform: x64
          packages: curl git zsh
      - name: 🪟 Run Install
        run: |
          sh ./tests/installers.sh
          sh -x ./lib/sh/install.sh -- -i skip
          command rm -rf "${XDG_DATA_HOME:-$HOME/.local/share}/zi" /home/runneradmin/.zi
          sh -x ./lib/sh/install.sh -- -a annex
          command rm -rf "${XDG_DATA_HOME:-$HOME/.local/share}/zi" /home/runneradmin/.zi
          sh -x ./lib/sh/install.sh -- -a loader
          command rm -rf "${XDG_DATA_HOME:-$HOME/.local/share}/zi" /home/runneradmin/.zi
          sh -x ./lib/sh/install.sh -- -a zunit
          command rm -rf "${XDG_DATA_HOME:-$HOME/.local/share}/zi" /home/runneradmin/.zi
          sh -x ./lib/sh/install.sh -- -a zpmod
        shell: C:\tools\cygwin\bin\bash.exe --login -o igncr '{0}'
      - name: 🪟 Smoke-test — verify zi.zsh present
        run: |
          ZI_BIN="${XDG_DATA_HOME:-${HOME}/.local/share}/zi/bin"
          if [ ! -f "${ZI_BIN}/zi.zsh" ]; then
            printf '%s\n' "FAIL: zi.zsh not found at ${ZI_BIN}/zi.zsh"
            exit 1
          fi
          printf '%s\n' "OK: zi.zsh found at ${ZI_BIN}/zi.zsh"
          command rm -rf "${XDG_DATA_HOME:-${HOME}/.local/share}/zi" /home/runneradmin/.zi
        shell: C:\tools\cygwin\bin\bash.exe --login -o igncr '{0}'
