name: Release

on:
  push:
    branches: [main]
    paths-ignore:
      - README.md
      - 'docs/**'
      - .github/workflows/release.yml
  workflow_dispatch:
    inputs:
      release_type:
        description: Release type
        required: true
        default: patch
        type: choice
        options:
          - patch
          - minor
          - major
          - prerelease

concurrency:
  group: release
  cancel-in-progress: false

jobs:
  release:
    name: Create Release
    runs-on: ubuntu-latest
    if: "!contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, '[skip release]')"
    timeout-minutes: 15

    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Setup Bun
        uses: oven-sh/setup-bun@v1
        with:
          bun-version: latest

      - name: Cache dependencies
        uses: actions/cache@v4
        with:
          path: ~/.bun/install/cache
          key: bun-${{ runner.os }}-${{ hashFiles('bun.lockb') }}
          restore-keys: bun-${{ runner.os }}-

      - name: Install dependencies
        run: bun install --frozen-lockfile

      - name: Run tests
        run: bun run test:ci
        env:
          NODE_ENV: test

      - name: Configure Git
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"

      - name: Run @g-1/workflow release
        run: bunx @g-1/workflow release --non-interactive --skip-cloudflare
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

      - name: Update repository URLs in package.json
        run: |
          # Update package.json with correct repository URLs
          bun run -e "
            const pkg = require('./package.json');
            pkg.repository.url = 'git+https://github.com/g-1-repo/studio.git';
            pkg.repository.directory = 'core';
            pkg.homepage = 'https://github.com/g-1-repo/studio/tree/main/core#readme';
            require('fs').writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');
          "
