name: Release

on:
  push:
    branches:
      - main
      - alpha
      - beta
      - next
      - 'next-major'
      - '+([0-9])?(.{+([0-9]),x}).x'

jobs:
  release:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: 16.12.0

      - name: Lint, test, compile, and generate documentation
        run: |
          npm ci
          npm run lint
          npm run test
          npm run compile
          npm run docs
        env:
          CI: true
          ALCHEMY_TOKEN: ${{ secrets.ALCHEMY_TOKEN }}

      - name: Semantic Release
        uses: docker://ghcr.io/codfish/semantic-release-action@sha256:43a9e5ce88fc0460c22f3f3c45e39ac99e1cefff2ffd76c6e8c34306c8ccec91
        id: semantic
        with:
          branches: |
            [
              '+([0-9])?(.{+([0-9]),x}).x',
              'main',
              'next',
              'next-major',
              {name: 'beta', prerelease: true},
              {name: 'alpha', prerelease: true}
            ]
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

      - name: Dump semantic outputs
        if: steps.semantic.outputs.new-release-published == 'true'
        run: echo "$SEMANTIC_OUTPUTS"
        env:
          SEMANTIC_OUTPUTS: ${{ toJson(steps.semantic.outputs) }}
