@@ -35,31 +35,44 @@ jobs:
3535 run : |
3636 echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
3737
38- - name : Detect changed packages dynamically
39- id : changes
40- run : |
41- echo "Detecting changed packages..."
42- ALL_PACKAGES=$(ls packages | grep -v '^$')
43- CHANGED_PACKAGES=$(git diff --name-only HEAD~1 HEAD | grep "^packages/" | cut -d/ -f2 | sort -u)
44- PACKAGES=""
45- for pkg in $CHANGED_PACKAGES; do
46- if echo "$ALL_PACKAGES" | grep -qw "$pkg"; then
47- PACKAGES="$PACKAGES $pkg"
48- fi
49- done
50- echo "PACKAGES=$PACKAGES" >> $GITHUB_ENV
51- echo "Packages to publish: $PACKAGES"
52-
53- - name : Publish packages
54- if : env.PACKAGES != ''
38+ - name : Publish packages based on tags
5539 run : |
5640 set -e
57- read -r -a PACKAGE_ARRAY <<< "$PACKAGES"
5841
59- for PACKAGE in "${PACKAGE_ARRAY[@]}"; do
60- PACKAGE_DIR="packages/$PACKAGE"
42+ echo "Fetching tags..."
43+ git fetch --tags
44+
45+ TAGS=$(git tag -l "packages/*/v*")
46+ echo "Found tags:"
47+ echo "$TAGS"
48+
49+ for TAG in $TAGS; do
6150 echo "-----------------------------"
62- echo "Publishing $PACKAGE "
51+ echo "Processing tag: $TAG "
6352
53+ PACKAGE=$(echo "$TAG" | cut -d/ -f2)
54+ VERSION=$(echo "$TAG" | cut -d/ -f3 | sed 's/^v//')
55+
56+ PACKAGE_DIR="packages/$PACKAGE"
57+
58+ if [ ! -f "$PACKAGE_DIR/package.json" ]; then
59+ echo "⏭ Skipping $PACKAGE (package.json not found)"
60+ continue
61+ fi
62+
63+ PACKAGE_NAME=$(node -p "require('./$PACKAGE_DIR/package.json').name")
64+
65+ echo "Package: $PACKAGE_NAME"
66+ echo "Version: $VERSION"
67+
68+ # Check if version exists in npm
69+ if npm view "$PACKAGE_NAME@$VERSION" version >/dev/null 2>&1; then
70+ echo "⏭ Already published: $PACKAGE_NAME@$VERSION"
71+ continue
72+ fi
73+
74+ echo "🚀 Publishing $PACKAGE_NAME@$VERSION"
6475 pnpm publish "$PACKAGE_DIR" --access public
6576 done
77+
78+ echo "✅ Publish step completed"
0 commit comments