diff --git a/scripts/publish-all.sh b/scripts/publish-all.sh index f34bf95..3ea3a57 100755 --- a/scripts/publish-all.sh +++ b/scripts/publish-all.sh @@ -1,17 +1,24 @@ #!/bin/bash set -e -# Usage: ./scripts/publish-all.sh +# Usage: ./scripts/publish-all.sh [--dry] # Example: ./scripts/publish-all.sh 0.4.0 +# Example: ./scripts/publish-all.sh 0.4.0 --dry if [ -z "$1" ]; then echo "Error: Version argument required" - echo "Usage: ./scripts/publish-all.sh " + echo "Usage: ./scripts/publish-all.sh [--dry]" echo "Example: ./scripts/publish-all.sh 0.4.0" + echo "Example: ./scripts/publish-all.sh 0.4.0 --dry" exit 1 fi VERSION="$1" +DRY_RUN=false + +if [ "$2" = "--dry" ]; then + DRY_RUN=true +fi # Validate version format (basic semver check) if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$ ]]; then @@ -101,16 +108,68 @@ echo "" echo "✅ All versions updated to $VERSION" echo "" +if [ "$DRY_RUN" = true ]; then + echo "✅ Dry run complete! Version updates have been applied." + echo "" + echo "📋 Updated packages:" + for pkg in "${PACKAGES[@]}"; do + PKG_NAME=$(node -p "require('./$pkg').name") + echo " - $PKG_NAME@$VERSION" + done + echo "" + echo "💡 Review the changes, then run without --dry to publish." + exit 0 +fi + +# Ask for confirmation +read -p "🚀 Ready to publish all packages to npm. Continue? (y/N) " -n 1 -r +echo +if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo "❌ Publish cancelled" + exit 1 +fi + echo "" -echo "✅ Dry run complete! Version updates have been applied." +echo "📤 Publishing packages..." echo "" -echo "📋 Updated packages:" + +# Publish each package +PUBLISHED=() +FAILED=() + for pkg in "${PACKAGES[@]}"; do + PKG_DIR=$(dirname "$pkg") PKG_NAME=$(node -p "require('./$pkg').name") - echo " - $PKG_NAME@$VERSION" + + echo "Publishing $PKG_NAME..." + + if (cd "$PKG_DIR" && npm publish --access public); then + echo " ✅ $PKG_NAME published successfully" + PUBLISHED+=("$PKG_NAME") + else + echo " ❌ $PKG_NAME failed to publish" + FAILED+=("$PKG_NAME") + fi + + echo "" done + +# Summary +echo "📊 Summary:" echo "" -echo "💡 Review the changes, then run with actual publishing enabled." +echo "Published (${#PUBLISHED[@]}):" +for pkg in "${PUBLISHED[@]}"; do + echo " ✅ $pkg" +done + +if [ ${#FAILED[@]} -gt 0 ]; then + echo "" + echo "Failed (${#FAILED[@]}):" + for pkg in "${FAILED[@]}"; do + echo " ❌ $pkg" + done + exit 1 +fi + echo "" -echo "🚨 Publishing is currently disabled (dry-run mode)" -echo " To enable publishing, edit scripts/publish-all.sh and uncomment the publish section" +echo "🎉 All packages published successfully!"