# ============================================================================= # RUSTELO TOOLS MODULE # Unified development toolkit for analysis, generation, and publishing # ============================================================================= # Set shell for all commands in this module set shell := ["bash", "-c"] # Tools binary path TOOLS_BIN := "cargo run --package tools --bin tools --features cli" # ============================================================================= # ANALYSIS & DOCUMENTATION # ============================================================================= # Generate comprehensive project analysis and documentation tools-analyze format="markdown" output="site/info": @echo "๐Ÿ” Analyzing project structure..." {{TOOLS_BIN}} analyze --format {{format}} --output {{output}} @echo "โœ… Analysis complete! Check {{output}}/" # Generate documentation only (alias for analyze) tools-docs: (tools-analyze "markdown" "site/info") # Validate generated documentation tools-validate: @echo "๐Ÿ“‹ Validating generated documentation..." @if [ -d "site/info" ]; then \ echo "โœ… Documentation directory exists"; \ find site/info -name "*.md" -exec echo " ๐Ÿ“„ {}" \;; \ find site/info -name "*.json" -exec echo " ๐Ÿ“Š {}" \;; \ else \ echo "โŒ No documentation found. Run: just tools-analyze"; \ exit 1; \ fi # Clean generated documentation tools-clean: @echo "๐Ÿงน Cleaning generated documentation..." rm -rf site/info @echo "โœ… Documentation cleaned" # Refresh documentation (clean + generate) tools-refresh: tools-clean tools-analyze # ============================================================================= # CODE GENERATION # ============================================================================= # Generate a new page tools-generate-page name template="basic": @echo "๐Ÿš€ Generating page: {{name}}" {{TOOLS_BIN}} generate page {{name}} --template {{template}} # Generate a new component tools-generate-component name template="basic": @echo "๐Ÿงฉ Generating component: {{name}}" {{TOOLS_BIN}} generate component {{name}} --template {{template}} # Generate a new route tools-generate-route path: @echo "๐Ÿ›ฃ๏ธ Generating route: {{path}}" {{TOOLS_BIN}} generate route {{path}} # Generate a new template tools-generate-template name: @echo "๐Ÿ“„ Generating template: {{name}}" {{TOOLS_BIN}} generate template {{name}} # List available templates tools-list-templates: @echo "๐Ÿ“‹ Available templates:" @if [ -d "site/templates" ]; then \ find site/templates -name "*.tera" -exec basename {} .tera \;; \ else \ echo " No templates directory found"; \ fi # ============================================================================= # INTERACTIVE MANAGEMENT # ============================================================================= # Launch interactive tools manager (TUI) tools-manage mode="dashboard": @echo "๐ŸŽ›๏ธ Launching Rustelo Tools Manager..." {{TOOLS_BIN}} manage --mode {{mode}} # Quick page editor tools-edit-page name: @echo "โœ๏ธ Editing page: {{name}}" {{TOOLS_BIN}} manage --mode editor --page {{name}} # ============================================================================= # PUBLISHING & SYNC # ============================================================================= # Sync with main Rustelo project tools-sync target="templates": @echo "๐Ÿ”„ Syncing {{target}} with Rustelo project..." {{TOOLS_BIN}} publish sync {{target}} # Package project for distribution tools-package format="template" output="dist": @echo "๐Ÿ“ฆ Packaging project ({{format}})..." {{TOOLS_BIN}} publish package --format {{format}} --output {{output}} # Deploy documentation tools-deploy target="github-pages": @echo "๐Ÿš€ Deploying documentation to {{target}}..." {{TOOLS_BIN}} docs deploy {{target}} # Serve documentation locally tools-serve port="8080": @echo "๐ŸŒ Serving documentation on http://localhost:{{port}}" {{TOOLS_BIN}} docs serve --port {{port}} # ============================================================================= # DEVELOPMENT WORKFLOW INTEGRATION # ============================================================================= # Complete development setup with tools integration tools-dev-complete: #!/usr/bin/env bash echo "๐Ÿš€ Starting complete Rustelo development environment..." # Start main development server in background echo " ๐ŸŒ Starting development server..." just dev & DEV_PID=$! # Generate fresh documentation echo " ๐Ÿ“š Generating documentation..." just tools-analyze # Start documentation server echo " ๐Ÿ“– Starting documentation server..." just tools-serve 8081 & DOCS_PID=$! echo "" echo "โœ… Development environment ready!" echo " ๐ŸŒ Main app: http://localhost:3030" echo " ๐Ÿ“– Documentation: http://localhost:8081" echo " ๐ŸŽ›๏ธ Tools manager: just tools-manage" echo "" echo "Press Ctrl+C to stop all services..." # Trap Ctrl+C to cleanup trap 'echo "๐Ÿ›‘ Shutting down..."; kill $DEV_PID $DOCS_PID 2>/dev/null; exit' INT # Wait for Ctrl+C wait # Fast development with automatic tools refresh tools-dev-watch: #!/usr/bin/env bash echo "๐Ÿ‘๏ธ Starting development with tools auto-refresh..." # Start development server just dev & DEV_PID=$! # Watch for changes and regenerate docs echo " ๐Ÿ” Watching for changes..." while true; do if command -v fswatch >/dev/null 2>&1; then fswatch -o src/ site/ | while read; do echo " ๐Ÿ”„ Changes detected, regenerating documentation..." just tools-analyze > /dev/null 2>&1 done else echo " โš ๏ธ fswatch not available, install with: brew install fswatch" echo " ๐Ÿ“š Generating documentation once..." just tools-analyze break fi done & WATCH_PID=$! trap 'echo "๐Ÿ›‘ Shutting down..."; kill $DEV_PID $WATCH_PID 2>/dev/null; exit' INT wait # Setup tools development environment tools-setup: @echo "๐Ÿ”ง Setting up Rustelo Tools development environment..." @echo " ๐Ÿ“ฆ Checking tools crate..." cargo check --package tools --features analysis-only @echo " ๐Ÿ“ Creating directories..." mkdir -p site/info site/templates dist @echo " ๐Ÿ“‹ Generating initial documentation..." just tools-analyze @echo "โœ… Tools environment ready!" # ============================================================================= # UTILITIES & DIAGNOSTICS # ============================================================================= # Show tools status and capabilities tools-status: @echo "๐Ÿ› ๏ธ Rustelo Tools Status" @echo "========================" @echo "" @echo "๐Ÿ“ฆ Crate Status:" @cargo check --package tools --quiet && echo " โœ… Tools crate builds successfully" || echo " โŒ Tools crate has build errors" @echo "" @echo "๐ŸŽฏ Available Features:" @echo " ๐Ÿ“Š analysis-only (minimal build features)" @echo " ๐ŸŽจ templates (Tera template system)" @echo " ๐ŸŽ›๏ธ cli (interactive management)" @echo " ๐Ÿ“ก publishing (sync & deployment)" @echo "" @echo "๐Ÿ“ Generated Content:" @if [ -d "site/info" ]; then \ echo " ๐Ÿ“š Documentation: $(find site/info -name "*.md" | wc -l) markdown files"; \ echo " ๐Ÿ“Š Data files: $(find site/info -name "*.json" | wc -l) JSON files"; \ else \ echo " ๐Ÿ“š No documentation generated yet"; \ fi @echo "" @echo "๐Ÿš€ Quick Start:" @echo " just tools-analyze # Generate documentation" @echo " just tools-manage # Interactive manager" @echo " just tools-dev-complete # Full development environment" # Test all tools functionality tools-test: @echo "๐Ÿงช Testing Rustelo Tools functionality..." @echo " ๐Ÿ“Š Testing analysis..." just tools-analyze > /dev/null 2>&1 && echo " โœ… Analysis works" || echo " โŒ Analysis failed" @echo " ๐Ÿ—๏ธ Testing build..." cargo check --package tools --quiet && echo " โœ… Build works" || echo " โŒ Build failed" @echo " ๐Ÿ“‹ Testing documentation generation..." @[ -d "site/info" ] && echo " โœ… Documentation generated" || echo " โŒ No documentation found" # Show available tools commands tools-help: @echo "๐Ÿ› ๏ธ Rustelo Tools Commands" @echo "==========================" @echo "" @echo "๐Ÿ“Š Analysis & Documentation:" @echo " tools-analyze Generate project analysis" @echo " tools-docs Generate documentation (alias)" @echo " tools-validate Validate generated docs" @echo " tools-refresh Clean and regenerate docs" @echo " tools-clean Remove generated docs" @echo "" @echo "๐Ÿš€ Code Generation:" @echo " tools-generate-page Create new page" @echo " tools-generate-component Create new component" @echo " tools-generate-route Create new route" @echo " tools-list-templates Show available templates" @echo "" @echo "๐ŸŽ›๏ธ Interactive Management:" @echo " tools-manage Launch TUI manager" @echo " tools-edit-page Quick page editor" @echo "" @echo "๐Ÿ“ก Publishing & Sync:" @echo " tools-sync Sync with Rustelo project" @echo " tools-package Package for distribution" @echo " tools-deploy Deploy documentation" @echo " tools-serve Serve docs locally" @echo "" @echo "๐Ÿ”ง Development Workflow:" @echo " tools-dev-complete Complete dev environment" @echo " tools-dev-watch Dev with auto-refresh" @echo " tools-setup Setup tools environment" @echo "" @echo "๐Ÿ” Utilities:" @echo " tools-status Show tools status" @echo " tools-test Test functionality" @echo " tools-help Show this help" # ============================================================================= # ALIASES FOR CONVENIENCE # ============================================================================= # Short aliases for common commands alias ta := tools-analyze alias tm := tools-manage alias tg := tools-generate-page alias ts := tools-status alias th := tools-help