name: {{#if publish}}Publish{{else}}Check Publish{{/if}}
runs-on: ubuntu-latest
defaults:
  run:
    shell: bash
{{#if publish}}
permissions:
  id-token: write
{{/if}}
steps:
  {{#if publish}}
  {{> stepsSetupYml jobCheckout=(obj ref="${{ fromJSON(inputs.releases)[0].tagName }}") }}
  - name: Set npm authToken
    run: npm config set '//registry.npmjs.org/:_authToken'=\${PUBLISH_TOKEN}
  - name: Publish
    env:
      PUBLISH_TOKEN: $\{{ secrets.PUBLISH_TOKEN }}
      RELEASES: $\{{ inputs.releases }}
  {{else}}
  {{> stepsSetupYml }}
  - name: Check If Published
    env:
      RELEASES: $\{{ inputs.releases }}
  {{/if}}
    run: |
      EXIT_CODE=0

      for release in $(echo $RELEASES | jq -r '.[] | @base64'); do
        {{#if publish}}
        PUBLISH_TAG=$(echo "$release" | base64 --decode | jq -r .publishTag)
        npm publish --provenance --tag="$PUBLISH_TAG"
        {{else}}
        SPEC="$(echo "$release" | base64 --decode | jq -r .pkgName)@$(echo "$release" | base64 --decode | jq -r .version)"
        npm view "$SPEC" --json
        {{/if}}
        STATUS=$?
        if [[ "$STATUS" -eq 1 ]]; then
          EXIT_CODE=$STATUS
        {{#unless publish}}
          echo "$SPEC ERROR"
        else
          echo "$SPEC OK"
        {{/unless}}       
        fi
      done

      exit $EXIT_CODE
