name: Create Release on Tag Push

on:
    push:
        tags:
            - "v*"

jobs:
    build:
        runs-on: ubuntu-latest
        steps:
            # Checkout
            - name: Checkout
              uses: actions/checkout@v3

            # Install Node.js
            - name: Install Node.js
              uses: actions/setup-node@v3
              with:
                  node-version: 18
                  registry-url: "https://registry.npmjs.org"

              # Install pnpm
            - name: Install pnpm
              uses: pnpm/action-setup@v2
              id: pnpm-install
              with:
                  version: 8
                  run_install: false

            # Get pnpm store directory
            - name: Get pnpm store directory
              id: pnpm-cache
              shell: bash
              run: |
                  echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT

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

            # Install dependencies
            - name: Install dependencies
              run: pnpm install

            # Build for production, 这一步会生成一个 package.zip
            - name: Build for production
              run: pnpm build

            - name: Release
              uses: ncipollo/release-action@v1
              with:
                  allowUpdates: true
                  artifactErrorsFailBuild: true
                  artifacts: 'package.zip'
                  token: ${{ secrets.GITHUB_TOKEN }}
                  prerelease: true