name: Release

on:
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Generate token
        id: generate-token
        uses: tibdex/github-app-token@v2
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.APP_KEY }}

      - uses: actions/checkout@v4
        with:
          token: ${{ steps.generate-token.outputs.token }}

      - name: Setup Python Environment
        uses: ./.github/actions/setup-python

      - name: Setup Node Environment
        uses: ./.github/actions/setup-node

      - name: Build API Doc
        uses: ./.github/actions/build-api-doc

      - run: echo "TAG_NAME=v$(poetry version -s)" >> $GITHUB_ENV

      - name: Archive Changelog
        uses: docker://ghcr.io/nonebot/auto-changelog:master
        with:
          changelog_file: website/src/pages/changelog.md
          archive_regex: '(?<=## )最近更新(?=\n)'
          archive_title: ${{ env.TAG_NAME }}
          commit_and_push: false

      - name: Archive Files
        run: |
          yarn archive $(poetry version -s)
          yarn prettier

      - name: Push Tag
        run: |
          git config user.name noneflow[bot]
          git config user.email 129742071+noneflow[bot]@users.noreply.github.com
          git add .
          git commit -m ":bookmark: Release $(poetry version -s)"
          git tag ${{ env.TAG_NAME }}
          git push && git push --tags