# Build Scripts Directory This directory contains all build-related scripts for the Rustelo project. These tools are organized by common build tasks and contexts to help you find the right tool for your needs. ## 📋 Requirements **Required Tools:** - [Nushell](https://www.nushell.sh/) - All `.nu` scripts require Nushell to be installed - [Just](https://github.com/casey/just) - Task runner (recommended for easy command execution) - For complete setup, see [Rustelo Requirements - Tools](https://github.com/your-repo/rustelo#tools) ## 🏗️ Build Tools by Context ### 🚀 Production Build & Deployment #### `leptos-build.nu` - Complete Production Build Pipeline **Purpose:** Full production build with dependencies, CSS, and optimization **Task:** Build production-ready Leptos application **Context:** Use when preparing for deployment or creating release builds **Command:** `nu scripts/build/leptos-build.nu` or `just leptos-build-nu` **Features:** - Installs all dependencies (main + end2end) - Builds CSS assets with UnoCSS - Compiles Leptos with release optimizations - Enables TLS and content-static features - Minifies JavaScript output #### `deploy.nu` - Application Deployment Manager **Purpose:** Complete deployment management with Docker Compose **Task:** Deploy, manage, and monitor application environments **Context:** Production, staging, and development deployments **Command:** `nu scripts/build/deploy.nu [OPTIONS] COMMAND` **Main Arguments:** - `-e, --env ENV` - Environment (dev|staging|production) - `-f, --file FILE` - Docker compose file - `-s, --scale N` - Number of replicas - `--migrate` - Run database migrations - `--backup` - Create database backup - `--features FEATURES` - Cargo features to enable **Commands:** - `deploy` - Deploy application with health checks - `stop/restart` - Control application lifecycle - `status` - Show deployment status and resource usage - `logs` - View application logs - `scale` - Scale replicas - `health` - Check application health - `backup/migrate` - Database operations - `clean` - Clean up unused containers **Examples:** ```bash nu scripts/build/deploy.nu deploy -e production --migrate --backup nu scripts/build/deploy.nu scale -s 3 nu scripts/build/deploy.nu health ``` ### 📦 Distribution & Packaging #### `dist-pack.nu` - Distribution Package Creator **Purpose:** Create compressed distribution packages for deployment **Task:** Package built application for different architectures **Context:** CI/CD pipelines, manual distribution, release preparation **Command:** `nu scripts/build/dist-pack.nu [OS_ARCH]` or `just dist-pack-nu [target]` **Arguments:** - `OS_ARCH` - Target architecture (e.g., linux-x64, darwin-arm64) **Features:** - Validates build artifacts exist - Packages server binary, site assets, public files - Creates compressed tar.gz archives - Shows package size and contents ### 🔧 Cross-Platform Development #### `cross-build.nu` - Docker Cross-Platform Builder **Purpose:** Build application for different architectures using Docker **Task:** Cross-compile for Linux from macOS/Windows **Context:** Multi-platform releases, Linux deployment from dev machines **Command:** `nu scripts/build/cross-build.nu` or `just cross-build-nu` **Features:** - Uses Docker for consistent Linux builds - Handles volume mounts for project, node_modules, target - Runs complete build pipeline in container - Shows distribution file results #### `build-docker-cross.nu` - Cross-Compilation Image Builder **Purpose:** Build Docker image for cross-platform compilation **Task:** Create/update build environment Docker image **Context:** Setting up cross-compilation environment, updating build tools **Command:** `nu scripts/build/build-docker-cross.nu` or `just docker-cross-build-nu` **Features:** - Builds custom Docker image for cross-compilation - Validates Docker availability - Shows image information and size ### 📚 Documentation & Examples #### `build-docs.nu` - Documentation Generator with Assets **Purpose:** Generate Cargo documentation with integrated logo assets **Task:** Build comprehensive project documentation **Context:** Documentation updates, release preparation, developer onboarding **Command:** `nu scripts/build/build-docs.nu` or `just docs-cargo-nu` **Features:** - Generates cargo doc with private items - Copies logo assets to documentation output - Validates documentation structure - Shows documentation size and location - Provides next steps for viewing docs #### `build-examples.nu` - Multi-Configuration Build Examples **Purpose:** Demonstrate building with different Cargo feature combinations **Task:** Test and showcase various application configurations **Context:** Testing feature combinations, documentation examples, CI validation **Command:** `nu scripts/build/build-examples.nu [OPTIONS]` **Arguments:** - `-c, --clean` - Clean build artifacts first - `-a, --all` - Build all configurations (default) - `-m, --minimal` - Minimal configuration only - `-f, --full` - Full-featured configuration only - `-p, --prod` - Production configuration only - `-q, --quick` - Common configurations only **Configurations Built:** - Minimal (no database) - TLS-only (secure static) - Auth-only (authentication) - Content-DB (database content) - Full-featured (auth + content) - Production (all features) - Specialized combinations ### 🌍 Content & Localization #### `build-localized-content.nu` - Markdown to HTML Content Builder **Purpose:** Convert localized markdown content to HTML for web serving **Task:** Process multilingual content with categories, tags, and metadata **Context:** Content updates, adding new languages, preparing content for deployment **Command:** `nu scripts/build/build-localized-content.nu` **Features:** - Reads content types from content-kinds.toml - Processes English and Spanish content - Converts markdown to HTML with frontmatter - Generates category indices and filter indices - Creates content manifest - Validates JSON structure - Shows content statistics **Content Processing:** - Discovers content types dynamically - Handles category directory structures - Extracts metadata (tags, categories, publishing status) - Generates navigation indices - Creates backward compatibility links ### 🛠️ Development Tools #### `dev-quiet.nu` - Filtered Development Server **Purpose:** Run development server with filtered, relevant output only **Task:** Start Leptos development server without noise **Context:** Daily development, focusing on important messages **Command:** `nu scripts/build/dev-quiet.nu` or `just dev-quiet-nu` **Features:** - Runs `cargo leptos watch` - Filters out verbose/irrelevant output - Highlights errors, warnings, and important messages - Shows clean, focused development feedback #### `kill-3030.nu` - Development Port Process Killer **Purpose:** Kill processes running on development ports (3030, 3031) **Task:** Clean up stuck development servers **Context:** Development workflow, server restart, port conflicts **Command:** `nu scripts/build/kill-3030.nu` **Features:** - Finds processes using ports 3030 and 3031 - Safely kills development server processes - Shows which processes were killed - Handles cases where no processes are found ## 🎨 Asset Build Tools (JavaScript) ### CSS & Theme Building - **`build-css-bundles.js`** - CSS bundling and optimization - **`build-design-system.js`** - Design system compilation - **`build-theme.js`** - Theme file generation - **`copy-css-assets.js`** - CSS asset management ### JavaScript & Highlighting - **`build-highlight-bundle.js`** - Syntax highlighting bundle creation - **`build-inline-scripts.js`** - Inline script optimization **Usage:** These are typically called through the main build pipeline or package.json scripts. ## 🚀 Quick Start Commands ```bash # Complete production build just leptos-build-nu # Development with clean output just dev-quiet-nu # Deploy to production nu scripts/build/deploy.nu deploy -e production --migrate # Build all configuration examples nu scripts/build/build-examples.nu --all # Generate documentation just docs-cargo-nu # Create distribution package just dist-pack-nu linux-x64 # Build localized content nu scripts/build/build-localized-content.nu # Clean development ports nu scripts/build/kill-3030.nu ``` ## 📁 File Organization ``` scripts/build/ ├── README.md # This documentation ├── leptos-build.nu # 🚀 Main production build ├── deploy.nu # 🚀 Deployment manager ├── dist-pack.nu # 📦 Distribution packaging ├── cross-build.nu # 🔧 Cross-platform building ├── build-docker-cross.nu # 🔧 Docker build environment ├── build-docs.nu # 📚 Documentation generation ├── build-examples.nu # 📚 Configuration examples ├── build-localized-content.nu # 🌍 Content localization ├── dev-quiet.nu # 🛠️ Development server ├── kill-3030.nu # 🛠️ Port cleanup └── [*.js files] # 🎨 Asset build tools ``` ## 🔄 Integration with Just Most scripts are integrated with the project's `justfile` for convenient access: ```bash just dev-quiet-nu # Quiet development server just docs-cargo-nu # Build documentation just dist-pack-nu linux-x64 # Create distribution just cross-build-nu # Cross-platform build just docker-cross-build-nu # Build Docker image ``` ## 🔧 Original Bash Scripts Original bash scripts are preserved in `scripts/sh/build/` for reference during the transition period. The Nushell versions provide enhanced error handling, structured data processing, and better cross-platform compatibility.