Skip to content

Commit 0df0e78

Browse files
feat: add functionality to set dist-tags for npm packages during migration (#103)
1 parent 6c2ea97 commit 0df0e78

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

scripts/migrate-npm-packages-between-github-instances.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ echo "$packages" | while IFS= read -r response; do
6767
curl -H "Authorization: token $GH_SOURCE_PAT" -Ls "https://npm.pkg.github.com/@$SOURCE_ORG/$package_name" >"${temp_dir}/${package_name}.json"
6868

6969
# Fetch versions, filter by date only if CUTOFF_DATE is set
70+
# TODO: Can instead get versions from the package manifest instead of API
7071
if [ -n "$CUTOFF_DATE" ]; then
7172
versions=$(GH_HOST="$SOURCE_HOST" GH_TOKEN=$GH_SOURCE_PAT gh api --paginate "/orgs/$SOURCE_ORG/packages/npm/$package_name/versions" |
7273
jq -r --arg cutoff "$CUTOFF_DATE" '.[] | select(.created_at >= $cutoff) | .name' |
@@ -104,6 +105,16 @@ echo "$packages" | while IFS= read -r response; do
104105

105106
done
106107

108+
# Mark the latest tag as latest in GitHub's UI, otherwise latest version will be last semver version pushed
109+
DIST_TAGS=$(jq -r '.["dist-tags"] | keys[]' "$MANIFEST")
110+
for DIST_TAG in $DIST_TAGS; do
111+
# get the version for the current tag
112+
version=$(jq --arg TAG "$DIST_TAG" -r '.["dist-tags"].[$TAG]' "$MANIFEST")
113+
echo "Setting dist-tag $DIST_TAG to version $version for package $PACKAGE"
114+
# set the dist-tag using npm CLI
115+
npm dist-tag add "$PACKAGE@$version" "$DIST_TAG" --userconfig "$temp_dir/.npmrc"
116+
done
117+
107118
echo "..."
108119

109120
done

0 commit comments

Comments
 (0)