# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages

name: Node.js Package

on:
  workflow_dispatch:
    inputs:
      tag:
        description: 'The tag to publish to: latest | next'
        required: false
        default: 'latest'
  release:
    types: [created]

jobs:
  publish-npm:
    runs-on: ubuntu-latest
    steps:
      - name: Check Tag Name
        if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag != 'latest' && github.event.inputs.tag != 'next' }}
        run: |
          echo 'Only the tags "latest" or "next" are supported. You entered "${{ github.event.inputs.tag }}"'
          exit 1
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 'lts/iron'
      - uses: actions/cache@v4
        id: npm-cache
        with:
          path: '**/node_modules'
          key: ${{ runner.os }}-modules-${{ hashFiles('**/package-lock.json') }}
      - name: Install dependencies
        if: steps.npm-cache.outputs.cache-hit != 'true'
        run: npm ci
      - run: npm test
      - uses: JS-DevTools/npm-publish@v3
        with:
          token: ${{ secrets.ADOBE_BOT_NPM_TOKEN }}
          tag: ${{ github.event.inputs.tag || 'latest' }}
          access: 'public'
