name: Release
on:
  workflow_dispatch:
    inputs:
      version:
        type: choice
        description: 'Release Version (next, beta, alpha, latest)'
        required: true
        default: 'next'
        options:
          - next
          - beta
          - alpha
          - latest
      branch:
        description: 'Release Branch (confirm release branch)'
        required: true
        default: 'main'
  issue_comment:
    types: [created]

permissions:
  id-token: write

jobs:
  issue_comment:
    name: Release with comment
    if: github.event.issue.pull_request && contains(github.event.comment.body, '!canary')
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repo
        uses: actions/checkout@v3
        with:
          fetch-depth: 1
          ref: refs/pull/${{ github.event.issue.number }}/head

      - name: Install Pnpm
        run: corepack enable

      - name: Setup Node.js 18
        uses: actions/setup-node@v3
        with:
          node-version: '18'
          cache: 'pnpm'

      - name: Install deps
        run: pnpm install

      - name: Build Packages
        run: pnpm run build:pkg

      - name: Release
        uses: module-federation/actions@v2
        with:
          version: 'next'
          type: 'release'
          branch: ''
          tools: 'changeset'
        env:
          GITHUB_TOKEN: ${{ secrets.REPO_SCOPED_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
          REPOSITORY: ${{ github.repository }}
          PULL_REQUEST_NUMBER: ${{ github.event.issue.number }}
          COMMENT: ${{ toJson(github.event.comment) }}

  release:
    name: Release
    if: ${{ github.event_name == 'workflow_dispatch' || github.event_name == 'push' }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 25

      - name: Install Pnpm
        run: corepack enable

      - name: Setup Node.js 18
        uses: actions/setup-node@v3
        with:
          node-version: '18'
          cache: 'pnpm'

      - name: Install deps
        run: pnpm install

      - name: Build and test Packages
        run: |
          git fetch origin main
          npx nx run-many --targets=build --projects=tag:type:pkg
          ls -l packages/*/dist packages/*/package.json

      - name: Release
        uses: module-federation/actions@v2
        with:
          version: ${{ github.event.inputs.version  || 'next' }}
          branch: ${{ github.event.inputs.branch }}
          type: 'release'
          tools: 'changeset'
        env:
          GITHUB_TOKEN: ${{ secrets.REPO_SCOPED_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
          REPOSITORY: ${{ github.repository }}
          REF: ${{ github.ref }}
