name: 'Setup pnpm'
author: Luna
description: 'Setup Node.js, pnpm, and install dependencies'

inputs:
  build-filter:
    description: 'The filter argument for pnpm build (e.g. ./easytier-web/*)'
    required: false
    default: ''

runs:
  using: "composite"
  steps:
    - name: Setup Node.js
      uses: actions/setup-node@v5
      with:
        node-version: 22

    - name: Install pnpm
      uses: pnpm/action-setup@v5
      with:
        version: 10
        run_install: false

    - name: Get pnpm store directory
      shell: bash
      run: |
        echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

    - name: Setup pnpm cache
      uses: actions/cache@v5
      with:
        path: ${{ env.STORE_PATH }}
        key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
        restore-keys: |
          ${{ runner.os }}-pnpm-store-

    - name: Install and build
      shell: bash
      run: |
        pnpm -r install
        if [ -n "${{ inputs.build-filter }}" ]; then
          echo "Building with filter: ${{ inputs.build-filter }}"
          pnpm -r --filter "${{ inputs.build-filter }}" build
        else
          echo "No build filter provided, building all packages"
          pnpm -r build
        fi
