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

163 lines
4.9 KiB
Bash
Executable File

#!/bin/bash
# Batch Component Generator for Leptos
# Usage: ./scripts/generate_batch_components.sh [batch_name]
set -e
# Colors for output
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
print_status() {
echo -e "${GREEN}[INFO]${NC} $1"
}
print_header() {
echo -e "${BLUE}================================${NC}"
echo -e "${BLUE} Batch Component Generator${NC}"
echo -e "${BLUE}================================${NC}"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Function to get component list for a batch
get_batch_components() {
local batch_name=$1
case $batch_name in
"phase1")
echo "separator:basic skeleton:basic textarea:form"
;;
"phase2")
echo "dropdown-menu:interactive hover-card:interactive menubar:interactive navigation-menu:interactive popover:interactive toggle:interactive"
;;
"phase3")
echo "scroll-area:layout sheet:layout table:layout tabs:layout"
;;
"phase4")
echo "dialog:feedback toast:feedback progress:feedback switch:form slider:form"
;;
"all")
echo "separator:basic skeleton:basic textarea:form switch:form slider:form dropdown-menu:interactive hover-card:interactive menubar:interactive navigation-menu:interactive popover:interactive toggle:interactive scroll-area:layout sheet:layout table:layout tabs:layout dialog:feedback toast:feedback progress:feedback"
;;
*)
echo ""
;;
esac
}
print_usage() {
echo "Usage: $0 [batch_name|component:type]"
echo ""
echo "Available batches:"
echo " phase1: separator:basic skeleton:basic textarea:form"
echo " phase2: dropdown-menu:interactive hover-card:interactive menubar:interactive navigation-menu:interactive popover:interactive toggle:interactive"
echo " phase3: scroll-area:layout sheet:layout table:layout tabs:layout"
echo " phase4: dialog:feedback toast:feedback progress:feedback switch:form slider:form"
echo " all: All components from all phases"
echo ""
echo "Available component types:"
echo " basic: badge separator skeleton"
echo " form: checkbox textarea switch slider"
echo " interactive: button dropdown-menu hover-card menubar navigation-menu popover toggle"
echo " layout: card aspect-ratio scroll-area sheet table tabs"
echo " feedback: alert dialog toast progress"
echo ""
echo "Examples:"
echo " $0 phase1 # Generate Phase 1 components"
echo " $0 separator:basic # Generate single component"
echo " $0 all # Generate all components"
}
if [ $# -eq 0 ]; then
print_usage
exit 1
fi
BATCH_NAME=$1
print_header
# Check if it's a predefined batch
COMPONENT_LIST=$(get_batch_components "$BATCH_NAME")
if [ -n "$COMPONENT_LIST" ]; then
print_status "Generating batch: $BATCH_NAME"
elif [[ $BATCH_NAME == *":"* ]]; then
# Single component specification
print_status "Generating single component: $BATCH_NAME"
COMPONENT_LIST="$BATCH_NAME"
else
print_error "Unknown batch: $BATCH_NAME"
print_usage
exit 1
fi
# Track success and failures
SUCCESS_COUNT=0
FAILURE_COUNT=0
FAILED_COMPONENTS=""
# Generate components
for component_spec in $COMPONENT_LIST; do
if [[ $component_spec == *":"* ]]; then
IFS=':' read -r component_name component_type <<< "$component_spec"
print_status "Generating $component_name ($component_type)..."
if ./scripts/generate_component_v2.sh "$component_name" "$component_type"; then
print_status "$component_name generated successfully"
SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
else
print_error "❌ Failed to generate $component_name"
FAILURE_COUNT=$((FAILURE_COUNT + 1))
FAILED_COMPONENTS="$FAILED_COMPONENTS $component_name"
fi
else
print_warning "Invalid component specification: $component_spec"
FAILURE_COUNT=$((FAILURE_COUNT + 1))
fi
done
# Summary
echo ""
print_header
print_status "Batch generation completed!"
echo ""
print_status "Results:"
echo " ✅ Success: $SUCCESS_COUNT"
echo " ❌ Failures: $FAILURE_COUNT"
if [ -n "$FAILED_COMPONENTS" ]; then
echo ""
print_error "Failed components:"
for component in $FAILED_COMPONENTS; do
echo " - $component"
done
fi
echo ""
print_status "Next steps:"
echo " 1. Run 'cargo check --workspace' to verify compilation"
echo " 2. Run 'cargo test' to run component tests"
echo " 3. Update component classes and styles as needed"
if [ $FAILURE_COUNT -eq 0 ]; then
echo ""
print_status "🎉 All components generated successfully!"
exit 0
else
echo ""
print_warning "Some components failed to generate. Check the errors above."
exit 1
fi