| 1 | #!/usr/bin/env bash |
| 2 | set -euo pipefail |
| 3 | |
| 4 | move_tag() { |
| 5 | local spec="$1" |
| 6 | local tag="$2" |
| 7 | if [[ -z "${NPM_TOKEN:-}" ]]; then |
| 8 | echo "::warning title=dist-tag ${tag} not moved::OIDC does not cover dist-tag changes. Run: pnpm dist-tag add ${spec} ${tag}" |
| 9 | return |
| 10 | fi |
| 11 | if ! NODE_AUTH_TOKEN="$NPM_TOKEN" pnpm dist-tag add "$spec" "$tag"; then |
| 12 | echo "::warning title=dist-tag ${tag} not moved::The configured NPM_TOKEN was rejected. Run: pnpm dist-tag add ${spec} ${tag}" |
| 13 | fi |
| 14 | } |
| 15 | |
| 16 | for tarball in release-packages/*.tgz; do |
| 17 | spec=$(tar -xOf "$tarball" package/package.json | jq -r '"\(.name)@\(.version)"') |
| 18 | if pnpm view "$spec" version >/dev/null 2>&1; then |
| 19 | echo "$spec is already published; skipping tarball" |
| 20 | if [[ "$FORCE_LATEST" == "true" ]]; then |
| 21 | move_tag "$spec" latest |
| 22 | if [[ "$CHANNEL_TAG" != "latest" ]]; then |
| 23 | move_tag "$spec" "$CHANNEL_TAG" |
| 24 | fi |
| 25 | fi |
| 26 | continue |
| 27 | fi |
| 28 | |
| 29 | pnpm publish "$tarball" --access public --tag "$PUBLISH_TAG" --no-git-checks |
| 30 | if [[ "$FORCE_LATEST" == "true" && "$CHANNEL_TAG" != "latest" ]]; then |
| 31 | move_tag "$spec" "$CHANNEL_TAG" |
| 32 | fi |
| 33 | done |