Files
huly-platform/scripts/publish.sh
T

101 lines
2.7 KiB
Bash

#!/bin/bash
# Packages to publish
PUBLISH_PACKAGES=("types" "sdk-types" "shared" "yaml" "rest-client" "query" "client-query" "cockroach" "server")
beta_mode=false
if [ "$1" == "beta" ]; then
beta_mode=true
beta_number="$2"
if [ -z "$beta_number" ]; then
echo "Please supply beta number as second parameter (e.g., 'sh scripts/publish.sh beta 2')"
exit 1
fi
fi
# Массивы для хранения путей пакетов и их оригинальных версий
package_paths=()
package_versions=()
save_versions() {
for pkg in packages/*; do
if [ -d "$pkg" ]; then
local package_json="$pkg/package.json"
if [ -f "$package_json" ]; then
local ver
ver=$(jq -r '.version' "$package_json")
package_paths+=("$pkg")
package_versions+=("$ver")
fi
fi
done
}
restore_versions() {
local length=${#package_paths[@]}
for ((i = 0; i < length; i++)); do
local pkg="${package_paths[$i]}"
local old_version="${package_versions[$i]}"
local package_json="$pkg/package.json"
jq --arg old_version "$old_version" '.version = $old_version' "$package_json" > "$package_json.tmp" && mv "$package_json.tmp" "$package_json"
done
}
bump_global_version() {
local version_file="./.version"
if [ -f "$version_file" ]; then
current_version=$(cat "$version_file" | tr -d '"')
if [ "$beta_mode" = true ]; then
new_version="${current_version}-beta.${beta_number}"
echo "Beta version: $new_version"
else
IFS='.' read -r major minor patch <<< "$current_version"
new_version="$major.$minor.$((patch + 1))"
echo "$new_version" > "$version_file"
echo "Version updated to $new_version"
fi
else
echo "❌ Version file $version_file not found"
exit 1
fi
}
update_package_json() {
local pkg_path=$1
local package_json="$pkg_path/package.json"
if [ -f "$package_json" ]; then
jq --arg new_version "$new_version" '.version = $new_version' "$package_json" > "$package_json.tmp" && mv "$package_json.tmp" "$package_json"
echo "Updated version for $pkg_path to $new_version"
else
echo "❌ package.json not found in $pkg_path"
fi
}
save_versions
bump_global_version
for pkg in packages/*; do
if [ -d "$pkg" ]; then
update_package_json "$pkg"
rm -rf "$pkg/types" "$pkg/dist"
fi
done
bun update
bun install
bun run build
for pkg in "${PUBLISH_PACKAGES[@]}"; do
echo "📦 Publishing $pkg..."
if [ "$beta_mode" = true ]; then
(cd "packages/$pkg" && bun publish --tag beta) || echo "❌ Failed to publish $pkg"
else
(cd "packages/$pkg" && bun publish) || echo "❌ Failed to publish $pkg"
fi
done
restore_versions
echo "✅ Done!"