Files
leptos-shadcn-ui/scripts/publish_release.sh

119 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# Leptos ShadCN UI Release Script
# This script publishes the 25 ready components to crates.io
set -e
echo "🚀 Starting Leptos ShadCN UI Release Process"
echo "=============================================="
# List of components ready for release
COMPONENTS=(
"button"
"input"
"label"
"checkbox"
"switch"
"radio-group"
"select"
"textarea"
"card"
"separator"
"tabs"
"accordion"
"dialog"
"popover"
"tooltip"
"alert"
"badge"
"skeleton"
"progress"
"toast"
"table"
"calendar"
"date-picker"
"pagination"
"slider"
"toggle"
)
echo "📦 Components to publish: ${#COMPONENTS[@]}"
echo ""
# Function to check if a crate is already published
check_if_published() {
local package_name=$1
local version="0.1.0"
# Check if the crate exists on crates.io
if cargo search "$package_name" --limit 1 | grep -q "^$package_name"; then
# Check if our specific version is already published
if cargo search "$package_name" --limit 10 | grep -q "$package_name = \"$version\""; then
return 0 # Already published
fi
fi
return 1 # Not published
}
# Function to publish a component
publish_component() {
local component=$1
local package_name="leptos-shadcn-${component}"
echo "📤 Publishing ${package_name}..."
# Check if already published
if check_if_published "$package_name"; then
echo "${package_name} is already published on crates.io - skipping"
return 0
fi
# Navigate to component directory
cd "packages/leptos/${component}"
# Check if component compiles
echo " 🔍 Checking compilation..."
if cargo check --quiet; then
echo " ✅ Component compiles successfully"
# Publish to crates.io
echo " 🚀 Publishing to crates.io..."
if cargo publish --quiet; then
echo "${package_name} published successfully!"
else
echo " ❌ Failed to publish ${package_name}"
return 1
fi
else
echo " ❌ Component compilation failed"
return 1
fi
# Return to root directory
cd ../../..
echo ""
}
# Main publishing loop
echo "Starting component publishing..."
echo ""
for component in "${COMPONENTS[@]}"; do
if ! publish_component "$component"; then
echo "❌ Release failed at component: ${component}"
echo "Please fix the issue and run the script again."
exit 1
fi
done
echo "🎉 All components published successfully!"
echo ""
echo "📋 Next steps:"
echo "1. Verify all packages are visible on crates.io"
echo "2. Update documentation with crates.io installation instructions"
echo "3. Announce the release to the community"
echo "4. Plan development for the remaining 27 components"
echo ""
echo "✅ Release v0.1.0 complete!"