---
name: 🍎 Check (MacOS)

on:
  push:
    branches: [main]
    paths:
      - "lib/sh/**"
      - "lib/zsh/**"
      - "tests/**"
      - ".github/workflows/check-macos.yml"
  pull_request:
    branches: [main]
    paths:
      - "lib/sh/**"
      - "lib/zsh/**"
      - "tests/**"
      - ".github/workflows/check-macos.yml"
  workflow_dispatch:

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  shellcheck:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - name: ⤵️ Check out code from GitHub
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - name: ☑️ ShellCheck
        uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # 2.0.0
        with:
          scandir: "./lib/sh"

  build:
    runs-on: macos-latest
    timeout-minutes: 30
    needs: [shellcheck]
    steps:
      - name: ⤵️ Check out code from GitHub
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - name: ⚙️  Prepare dependencies
        run: |
          brew install zsh
      - name: "⚙️ Check: unit fixtures"
        run: sh ./tests/installers.sh
      - name: "⚙️  Check: install.sh -- -i skip"
        run: sh -x ./lib/sh/install.sh -- -i skip; command rm -rf "${XDG_DATA_HOME:-$HOME/.local/share}/zi" ~/.zi
      - name: "⚙️  Check: install.sh -- -a annex"
        run: sh -x ./lib/sh/install.sh -- -a annex; command rm -rf "${XDG_DATA_HOME:-$HOME/.local/share}/zi" ~/.zi
      - name: "⚙️  Check: install.sh -- -a loader"
        run: sh -x ./lib/sh/install.sh -- -a loader; command rm -rf "${XDG_DATA_HOME:-$HOME/.local/share}/zi" ~/.zi
      - name: "⚙️  Check: install.sh -- -a zunit"
        run: sh -x ./lib/sh/install.sh -- -a zunit; command rm -rf "${XDG_DATA_HOME:-$HOME/.local/share}/zi" ~/.zi
      - name: "⚙️ Check: install_zpmod.sh"
        run: sh -x ./lib/sh/install_zpmod.sh
      - name: ⚙️ Load zpmod module
        run: |
          module_path+=( "${XDG_DATA_HOME:-$HOME/.local/share}/zi/zmodules/zpmod/Src" )
          zmodload zi/zpmod
          zpmod source-study -l
        shell: zsh {0}
