name: Setup pnpm + store cache
description: Prepare pnpm via corepack and restore pnpm store cache.
inputs:
  pnpm-version:
    description: pnpm version to activate via corepack.
    required: false
    default: "10.23.0"
  cache-key-suffix:
    description: Suffix appended to the cache key.
    required: false
    default: "node22"
runs:
  using: composite
  steps:
    - name: Setup pnpm (corepack retry)
      shell: bash
      run: |
        set -euo pipefail
        corepack enable
        for attempt in 1 2 3; do
          if corepack prepare "pnpm@${{ inputs.pnpm-version }}" --activate; then
            pnpm -v
            exit 0
          fi
          echo "corepack prepare failed (attempt $attempt/3). Retrying..."
          sleep $((attempt * 10))
        done
        exit 1

    - name: Resolve pnpm store path
      id: pnpm-store
      shell: bash
      run: echo "path=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT"

    - name: Restore pnpm store cache
      uses: actions/cache@v4
      with:
        path: ${{ steps.pnpm-store.outputs.path }}
        key: ${{ runner.os }}-pnpm-store-${{ inputs.cache-key-suffix }}-${{ hashFiles('pnpm-lock.yaml') }}
        restore-keys: |
          ${{ runner.os }}-pnpm-store-${{ inputs.cache-key-suffix }}-
