mirror of
https://github.com/cloud-shuttle/leptos-shadcn-ui.git
synced 2025-12-23 06:10:01 +00:00
119 lines
2.9 KiB
Bash
Executable File
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!"
|