1#!/usr/bin/env bash
2set -euo pipefail
3
4move_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
16for 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
33done