name: master

on:
  pull_request:
    branches: [master]
  push:
    branches: [master]

jobs:
  build:
    name: Build test and publish unstable release
    runs-on: [self-hosted, linux, engineering]
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup nodejs
        uses: actions/setup-node@v4
        with:
          node-version: 22.x
          registry-url: "https://registry.npmjs.org"

      - name: Remove Example Project
        run: |
          rm -rf ./example

      - name: Install, lint and build
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPMJS_TOKEN }}
        run: |
          yarn install --frozen-lockfile
          yarn format
          yarn lint
          yarn license:check
          yarn build

      - name: Publish unstable release
        if:
          "(github.ref == 'refs/heads/master') && (!contains(github.event.head_commit.message, 'chore(release):
          publish'))"
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPMJS_TOKEN }}
        run: |
          npm whoami
          yarn publish:unstable

      - name: Publish stable release
        if:
          "(github.ref == 'refs/heads/master') && (contains(github.event.head_commit.message, 'chore(release):
          publish'))"
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPMJS_TOKEN }}
        run: |
          npm whoami
          yarn publish:release
