Skip to content

Commit c722d97

Browse files
committed
Make CLI npm publish reruns idempotent
1 parent 3055e28 commit c722d97

2 files changed

Lines changed: 34 additions & 2 deletions

File tree

apps/moose-cli-npm/scripts/release-bin.sh

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,28 @@ cp "../../target/${build_target}/release/${current_bin}" "../../target/${build_t
4040
cp "../../target/${build_target}/release/${current_bin}" "${node_pkg}/bin"
4141
# publish the package
4242
cd "${node_pkg}"
43+
package_name=$(node -p "require('./package.json').name")
44+
package_version=$(node -p "require('./package.json').version")
4345
# For CI builds (TAG_LATEST=false), publish with version-specific tag
4446
# For release builds (TAG_LATEST=true), publish and update the 'latest' tag
4547
if [ "${TAG_LATEST}" = "true" ]; then
4648
# Release build - publish and update 'latest' tag
49+
if npm view "${package_name}@${package_version}" version >/dev/null 2>&1; then
50+
current_latest=$(npm view "${package_name}" dist-tags.latest 2>/dev/null || true)
51+
if [ "${current_latest}" = "${package_version}" ]; then
52+
echo "${package_name}@${package_version} is already published and latest already points to it"
53+
exit 0
54+
fi
55+
56+
echo "${package_name}@${package_version} is already published, but latest points to ${current_latest}"
57+
exit 1
58+
fi
4759
npm publish --access public
4860
else
4961
# CI build - publish with dev tag (doesn't update 'latest')
62+
if npm view "${package_name}@${package_version}" version >/dev/null 2>&1; then
63+
echo "${package_name}@${package_version} is already published; skipping publish"
64+
exit 0
65+
fi
5066
npm publish --access public --tag dev
51-
fi
67+
fi

apps/moose-cli-npm/scripts/release-cli.sh

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,28 @@ pnpm install --filter "@514labs/moose-cli" --no-frozen-lockfile # requires optio
2626
pnpm build --filter @514labs/moose-cli
2727

2828
cd apps/moose-cli-npm
29+
package_name=$(node -p "require('./package.json').name")
30+
package_version=$(node -p "require('./package.json').version")
2931
# For CI builds (TAG_LATEST=false), publish with version-specific tag
3032
# For release builds (TAG_LATEST=true), publish and update the 'latest' tag
3133
if [ "${TAG_LATEST}" = "true" ]; then
3234
# Release build - publish and update 'latest' tag
35+
if npm view "${package_name}@${package_version}" version >/dev/null 2>&1; then
36+
current_latest=$(npm view "${package_name}" dist-tags.latest 2>/dev/null || true)
37+
if [ "${current_latest}" = "${package_version}" ]; then
38+
echo "${package_name}@${package_version} is already published and latest already points to it"
39+
exit 0
40+
fi
41+
42+
echo "${package_name}@${package_version} is already published, but latest points to ${current_latest}"
43+
exit 1
44+
fi
3345
pnpm publish --access public --no-git-checks
3446
else
3547
# CI build - publish with dev tag (doesn't update 'latest')
48+
if npm view "${package_name}@${package_version}" version >/dev/null 2>&1; then
49+
echo "${package_name}@${package_version} is already published; skipping publish"
50+
exit 0
51+
fi
3652
pnpm publish --access public --no-git-checks --tag dev
37-
fi
53+
fi

0 commit comments

Comments
 (0)