name: 'Publish to npm'
on:
  workflow_call:
    inputs:
      version:
        description: "Which version number should we use for the release"
        type: 'string'
        required: true

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [20.x]

    steps:
      - uses: actions/checkout@v4
        with:
          ref: v${{ inputs.version }} # tag that should be created by the caller workflow
      - name: Setup to npm
        uses: actions/setup-node@v4
        with:
          node-version: 20.x
          registry-url: 'https://registry.npmjs.org'
          cache: 'yarn'
      - name: Enable corepack
        run: corepack enable
      - name: Build
        run: |
          yarn install --immutable
      - name: Publish to npm
        run: |
          LATEST=$(npm show unleash-server version)
          TAG=$(node scripts/npm-tag.js $LATEST)
          npm publish --tag ${TAG:-latest}
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
      - uses: aws-actions/configure-aws-credentials@v2
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
      - name: Publish static assets to S3
        run: |
          aws s3 cp frontend/build s3://getunleash-static/unleash/v${{ inputs.version }} --recursive