name: Build Astro and deploy dist

on:
  push:
    branches:
      - stage
      - prod
  workflow_dispatch:

permissions:
  contents: write # 👈 This is required for pushing branches

jobs:
  build:
    runs-on: ubuntu-latest
    # Dynamically set environment name based on branch
    environment: ${{ github.ref_name }}

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "22" # match your project

      - name: Install dependencies
        run: npm ci

      - name: Build Astro project
        run: npm run build

      - name: Deploy dist to dist-${{ github.ref_name }}
        run: |
          # Configure Git
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"

          # Create temporary branch
          git checkout --orphan temp-build

          # Clean it
          git rm -rf .

          # Commit and force push
          git add dist

          git branch
          git commit -m "Update dist/ [skip ci]"
          git push https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} temp-build:dist-${{ github.ref_name }} --force

      - name: Trigger deployment webhook
        run: |
          curl -v "$DEPLOY_WEBHOOK" --header "Authorization: Bearer $DEPLOY_TOKEN"
        env:
          DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_DEPLOY_WEBHOOK }}
          DEPLOY_TOKEN: ${{ secrets.COOLIFY_DEPLOY_TOKEN }}
