website-htmx-rustelo-code/justfiles/ui.just
2026-07-10 03:44:13 +01:00

319 lines
No EOL
12 KiB
Text

# UI Management - Pages and Components
# Rustelo UI management commands for pages, components, and routes
# =============================================================================
# HELP
# =============================================================================
# Show all UI management options
h:
@echo "🎨 UI Management - Pages & Components"
@echo ""
@echo "📄 PAGE MANAGEMENT:"
@echo " just ui pages-list # List all generated page components"
@echo " just ui pages-info # Detailed page component information"
@echo " just ui pages-rebuild # Force rebuild all page components"
@echo " just ui pages-cache # Show page cache status"
@echo ""
@echo "🧩 COMPONENT MANAGEMENT:"
@echo " just ui components-list # List available components"
@echo " just ui components-foundation # List foundation components"
@echo " just ui components-local # List local components"
@echo ""
@echo "🛣️ ROUTES MANAGEMENT:"
@echo " just ui routes-list # List all configured routes"
@echo " just ui routes-by-lang # Show routes by language"
@echo " just ui routes-enabled # Show only enabled routes"
@echo " just ui routes-info <route> # Detailed info for specific route"
@echo " just ui routes-validate # Validate all route configurations"
@echo ""
@echo "🔧 DEVELOPMENT TOOLS:"
@echo " just ui check-generated # Check all generated code"
@echo " just ui debug-level <0-2> # Set debug level (0=off, 1=basic, 2=verbose)"
@echo " just ui foundation-discover # Discover available foundation components"
@echo " just ui build-with-debug # Build with debug output"
@echo ""
@echo "Example usage:"
@echo " just ui h # Show this help"
@echo " just ui routes-list # List all routes"
@echo " just ui debug-level 2 # Enable verbose debug output"
# =============================================================================
# PAGE MANAGEMENT
# =============================================================================
# List all generated page components
pages-list:
@echo "📄 Generated Page Components:"
@echo ""
@if [ -d "target/rustelo-cache/pages" ]; then \
ls -la target/rustelo-cache/pages/page_*.rs 2>/dev/null | \
awk '{printf " %-25s %s %s %s\n", $9, $6, $7, $8}' | \
sed 's|target/rustelo-cache/pages/page_||g' | \
sed 's|\.rs||g' || echo " No generated pages found"; \
else \
echo " ❌ Cache directory not found. Run 'just build' first."; \
fi
@echo ""
@echo "📊 Summary:"
@find target/rustelo-cache/pages -name "page_*.rs" 2>/dev/null | wc -l | xargs printf " Total generated pages: %d\n"
# Show detailed page component information
pages-info:
@echo "📄 Detailed Page Component Information:"
@echo ""
@bash scripts/dev/check-generated.sh
# Force rebuild all page components
pages-rebuild:
@echo "🔄 Rebuilding all page components..."
@cargo clean -p website-pages
@cargo build --package website-pages
@echo "✅ Page components rebuilt successfully"
# Show page cache status
pages-cache:
@echo "💾 Page Cache Status:"
@echo ""
@echo "📂 Cache locations:"
@echo " - Generated components: target/rustelo-cache/pages/"
@echo " - Build output: target/debug/build/website-pages-*/out/"
@echo ""
@if [ -d "target/rustelo-cache/pages" ]; then \
echo "📊 Cache contents:"; \
find target/rustelo-cache/pages -name "*.rs" -printf " - %f (%TY-%Tm-%Td %TH:%TM)\n" 2>/dev/null | sort; \
else \
echo "❌ No cache found. Run 'just build' first."; \
fi
# =============================================================================
# COMPONENT MANAGEMENT
# =============================================================================
# List available components
components-list:
@echo "🧩 Available Components:"
@echo ""
@echo "🏗️ Foundation Components:"
@cargo rustelo fn list -f component 2>/dev/null | head -20 || echo " Run 'cargo build' first to see components"
@echo ""
@echo "📁 Local Components:"
@find crates/components/src -name "*.rs" -not -name "mod.rs" -not -name "lib.rs" 2>/dev/null | \
sed 's|.*/||g' | sed 's|\.rs||g' | sort | sed 's/^/ - /' || echo " No local components found"
# List foundation components
components-foundation:
@echo "🏗️ Foundation Components Discovery:"
@echo ""
@cargo rustelo fn list -f component --format table 2>/dev/null || echo "❌ Foundation discovery failed. Check rustelo CLI setup."
# List local components
components-local:
@echo "📁 Local Components:"
@echo ""
@find crates -name "*.rs" -path "*/components/*" -not -name "mod.rs" -not -name "lib.rs" | \
while read file; do \
component=$(basename "$file" .rs); \
echo " - $component ($(dirname "$file"))"; \
done
# =============================================================================
# ROUTES MANAGEMENT (with nushell commands)
# =============================================================================
# List all configured routes
[no-cd]
routes-list:
#!/usr/bin/env bash
echo "🛣️ All Configured Routes:"
echo ""
for file in site/config/routes/*.toml; do
if [ -f "$file" ]; then
lang=$(basename "$file" .toml)
echo "📁 $lang.toml routes"
echo " Use 'just ui routes-enabled' for detailed view"
echo ""
fi
done
# Show routes by language
routes-by-lang:
#!/usr/bin/env nu
echo "🌐 Routes by Language:"
echo ""
let route_files = (ls site/config/routes/*.toml)
for file in $route_files {
let lang = ($file.name | path basename | str replace ".toml" "")
let routes = (open $file.name | get routes? | default [])
let enabled_count = ($routes | where enabled | length)
let total_count = ($routes | length)
echo $"🗣️ ($lang | str upcase) Language: ($enabled_count)/($total_count) enabled"
let enabled_routes = ($routes | where enabled)
for route in $enabled_routes {
let component = ($route.component? | default "Unknown")
let path_info = ($route.path? | default "/")
echo $" - ($component) -> ($path_info)"
}
echo ""
}
# Show only enabled routes
routes-enabled:
#!/usr/bin/env nu
echo "✅ Enabled Routes Only:"
echo ""
let route_files = (ls site/config/routes/*.toml)
for file in $route_files {
let lang = ($file.name | path basename | str replace ".toml" "")
let routes = (open $file.name | get routes? | default [])
let enabled_routes = ($routes | where enabled)
if ($enabled_routes | length) > 0 {
echo $"📁 ($lang):"
for route in $enabled_routes {
let component = ($route.component? | default "Unknown")
let path_info = ($route.path? | default "/")
let unified = ($route.unified_component? | default $"Unified($component)Page")
echo $" 🎯 ($component) -> ($path_info) (unified: ($unified))"
}
echo ""
}
}
# Get detailed info for specific route
routes-info route:
#!/usr/bin/env nu
let search_route = "{{route}}"
echo $"🔍 Route Information for: ($search_route)"
echo ""
let route_files = (ls site/config/routes/*.toml)
mut found = false
for file in $route_files {
let lang = ($file.name | path basename | str replace ".toml" "")
let routes = (open $file.name | get routes? | default [])
for route in $routes {
let component = ($route.component? | default "")
if ($component | str contains $search_route) {
$found = true
echo $"📍 Found in ($lang).toml:"
echo $" Component: ($route.component? | default 'Unknown')"
echo $" Path: ($route.path? | default '/')"
echo $" Enabled: ($route.enabled)"
echo $" Unified: ($route.unified_component? | default 'Auto-generated')"
echo $" Language: ($route.language? | default $lang)"
let description = ($route.description? | default "")
if $description != "" {
echo $" Description: ($description)"
}
echo ""
}
}
}
if not $found {
echo $"❌ Route '($search_route)' not found in any configuration file"
}
# Validate all route configurations
routes-validate:
#!/usr/bin/env nu
echo "🔧 Validating Route Configurations:"
echo ""
let route_files = (ls site/config/routes/*.toml)
mut errors = 0
for file in $route_files {
let lang = ($file.name | path basename | str replace ".toml" "")
echo $"📄 Validating ($lang).toml..."
try {
let routes = (open $file.name | get routes? | default [])
let enabled_routes = ($routes | where enabled)
echo $" ✅ Parsed successfully: ($routes | length) total, ($enabled_routes | length) enabled"
# Check for required fields
for route in $enabled_routes {
let component = ($route.component? | default "")
if $component == "" {
echo $" ⚠️ Route missing component field"
$errors = ($errors + 1)
}
}
} catch { |err|
echo $" ❌ Parse error: ($err.msg)"
$errors = ($errors + 1)
}
}
echo ""
if $errors == 0 {
echo "🎉 All route configurations are valid!"
} else {
echo $"❌ Found ($errors) configuration errors"
}
# =============================================================================
# DEVELOPMENT TOOLS
# =============================================================================
# Check all generated code
check-generated:
@echo "🔍 Checking All Generated Code:"
@echo ""
@bash scripts/dev/check-generated.sh
# Set debug level (0=off, 1=basic, 2=verbose)
debug-level level:
#!/usr/bin/env nu
let new_level = {{level}}
# Validate level
if $new_level not-in [0, 1, 2] {
echo "❌ Invalid debug level. Use 0 (off), 1 (basic), or 2 (verbose)"
exit 1
}
echo $"🔧 Setting debug level to ($new_level)..."
# Update manifest file
let manifest_content = (open rustelo.manifest.toml)
let updated_manifest = ($manifest_content | upsert build.debug $new_level)
$updated_manifest | to toml | save rustelo.manifest.toml
let level_desc = match $new_level {
0 => "off - minimal output"
1 => "basic - essential info only"
2 => "verbose - full debug information"
}
echo $"✅ Debug level set to ($new_level) (($level_desc))"
echo ""
echo "🔄 Rebuild to see changes:"
echo " cargo clean -p website-pages && cargo build"
# Discover available foundation components
foundation-discover:
@echo "🏗️ Foundation Component Discovery:"
@echo ""
@cargo rustelo fn list --format table 2>/dev/null || echo "❌ Foundation discovery unavailable. Check rustelo CLI setup."
# Build with debug output
build-with-debug:
@echo "🔨 Building with Debug Output:"
@echo ""
@cargo build --package website-pages
@echo ""
@echo "📊 Generated components available in target/rustelo-cache/pages/"