#!/bin/bash set -e cd "$(dirname "$0")" # Source logging utilities source ../formatters/logging/logging.sh log_title "Spine TypeScript Publisher" # Get current version currentVersion=$(grep -o '"version": "[^"]*' package.json | grep -o '[^"]*$') major=$(echo "$currentVersion" | cut -d. -f1) minor=$(echo "$currentVersion" | cut -d. -f2) patch=$(echo "$currentVersion" | cut -d. -f3) newPatch=$((patch + 1)) newVersion="$major.$minor.$newPatch" log_detail "Current version: $currentVersion" log_detail "New version: $newVersion" packages=( "package.json" "spine-canvas/package.json" "spine-canvaskit/package.json" "spine-core/package.json" "spine-phaser-v3/package.json" "spine-phaser-v4/package.json" "spine-pixi-v7/package.json" "spine-pixi-v8/package.json" "spine-player/package.json" "spine-threejs/package.json" "spine-webgl/package.json" "spine-webcomponents/package.json" ) for package in "${packages[@]}"; do log_action "Updating $package" if SED_OUTPUT=$(sed -i '' "s/$currentVersion/$newVersion/" "$package" 2>&1); then log_ok else log_fail log_error_output "$SED_OUTPUT" exit 1 fi done log_action "Removing package-lock.json" if RM_OUTPUT=$(rm package-lock.json 2>&1); then log_ok else log_warn fi log_action "Cleaning @esotericsoftware modules" if RM_OUTPUT=$(rm -rf node_modules/@esotericsoftware 2>&1); then log_ok else log_warn fi log_action "Installing workspace dependencies" if NPM_OUTPUT=$(npm install --workspaces 2>&1); then log_ok else log_fail log_error_output "$NPM_OUTPUT" exit 1 fi log_action "Publishing all workspaces" if NPM_OUTPUT=$(npm publish --access public --workspaces 2>&1); then log_ok log_summary "✓ TypeScript packages published successfully with version $newVersion" else log_fail log_error_output "$NPM_OUTPUT" exit 1 fi