name: Build and release

on: workflow_dispatch

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Set up node
        uses: actions/setup-node@v3
        with:
          node-version: 18
          cache: yarn
      - name: Install
        run: yarn install --immutable
      - name: Build
        run: yarn build
      - name: Upload build
        uses: actions/upload-artifact@v3
        with:
          name: build
          path: |
            lib
            umd

  changelog:
    name: Changelog
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0 # necessary for correct changelog
      - name: Set up node
        uses: actions/setup-node@v3
        with:
          node-version: 18
          cache: yarn
      - name: Install
        run: yarn install --immutable
      - name: Changelog
        run: |
          yarn semantic-release \
            -p @semantic-release/release-notes-generator \
            --dry-run \
            | tee changelog.out
          sed -n '/#/,$p' changelog.out >> $GITHUB_STEP_SUMMARY

  release:
    name: Release
    runs-on: ubuntu-latest
    needs: [build, changelog]
    environment: npm
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          token: ${{ secrets.GH_TOKEN }}
          fetch-depth: 0 # necessary for correct CHANGELOGS
      - name: Set up node
        uses: actions/setup-node@v3
        with:
          node-version: 18
          cache: yarn
      - name: Install
        run: yarn install --immutable
      - name: Download build
        uses: actions/download-artifact@v3
        with:
          name: build
      - name: Release
        env:
          GH_TOKEN: ${{ secrets.GH_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
        run: yarn release
