name: Preview site

on:
  push:
    branches-ignore:
      - master

jobs:
  preview:
    name: Build & Deploy
    runs-on: ubuntu-latest
    env:
      CI: true
      SITE_PREVIEW_PATH: preview/${{ github.sha }}
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v4

      - name: Set up pnpm
        uses: pnpm/action-setup@v3

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          cache: pnpm
          node-version-file: package.json

      - name: Install Dependencies
        run: pnpm i

      - name: Cache babel-loader
        id: babel-loader-cache
        uses: actions/cache@v4
        with:
          path: 'site/node_modules/.cache/babel-loader'
          key: babel-loader-${{ runner.os }}-${{ hashFiles('./pnpm-lock.yaml') }}

      - name: Build
        run: pnpm build:site
        env:
          BASE_NAME: /braid-design-system/${{ env.SITE_PREVIEW_PATH }}
          BRANCH_NAME: ${{ github.ref_name }}
          HEAD_BRANCH_NAME: ${{ github.head_ref }}

      - name: Deploy preview site
        uses: JamesIves/github-pages-deploy-action@881db5376404c5c8d621010bcbec0310b58d5e29 # 4.6.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          folder: ./site/dist
          target-folder: ${{ env.SITE_PREVIEW_PATH }}
          commit-message: Preview of `${{ github.ref_name }}`

      - name: Update PR status
        run: pnpm post-commit-status
        env:
          BASE_NAME: /braid-design-system/${{ env.SITE_PREVIEW_PATH }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}