name: Publish

on:
  push:
    branches:
      - main
      - 'v*/main'

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:
    inputs:
      sha:
        description: The commit hash referring to the commit to check.
        required: false
      ref:
        description: The head branch associated with the pull request.
        required: false

env:
  NODE_OPTIONS: --max_old_space_size=16384

jobs:
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Environment variables available to all steps in the job to ensure provenance of the build
    permissions:
      contents: read
      id-token: write

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v4
        with:
          # pulls all commits (needed for lerna / semantic release to correctly version)
          fetch-depth: '0'

      - name: Cache build setup
        uses: actions/cache@v4
        with:
          path: node_modules/.cache
          key: ${{ runner.os }}-cache-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-cache-

      - name: Use Node.js 20
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      - run: npm -v
      - run: npm install

      - name: Authenticate with Registry
        run: |
          echo "@umbraco-ui:registry=https://registry.npmjs.org/" > .npmrc
          echo "registry=https://registry.npmjs.org/" >> .npmrc
          echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc
          npm whoami
        env:
          NPM_TOKEN: ${{ secrets.UMBRACO_PUBLISH_NPM_TOKEN}}

      - name: Publish package
        run: npm run lerna:publish
        env:
          NPM_TOKEN: ${{ secrets.UMBRACO_PUBLISH_NPM_TOKEN}}
