name: Main
on:
  push:
    branches: [main]
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  verify:
    name: Verify
    uses: ./.github/workflows/verify.yml
    secrets: inherit

  changesets:
    name: Changesets
    runs-on: ubuntu-latest
    timeout-minutes: 5

    steps:
      - name: Clone repository
        uses: actions/checkout@v3
        with:
          # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
          fetch-depth: 0

      - name: Install dependencies
        uses: ./.github/actions/install-dependencies

      - name: Create Version Pull Request
        uses: changesets/action@v1
        with:
          version: bun run changeset:version
          commit: 'chore: version package'
          title: 'chore: version package'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  release:
    name: Release
    needs: verify
    runs-on: ubuntu-latest
    timeout-minutes: 5

    steps:
      - name: Clone repository
        uses: actions/checkout@v3

      - name: Install dependencies
        uses: ./.github/actions/install-dependencies

      - name: Publish to NPM
        uses: changesets/action@v1
        with:
          publish: bun run changeset:release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}