# Build Commands Module # Commands for building, serving, and managing production/development builds # Set shell for commands set shell := ["bash", "-c"] # Build for production (unified pipeline) - default [no-cd] prod: @echo "๐Ÿš€ Building for production..." @echo "๐Ÿ“‹ Step 1: Validating content consistency..." @just ../dev::content-validate-consistency @echo "๐ŸŽจ Step 2: Building CSS and assets..." @just ../dev::css-build @echo "๐Ÿ“ Step 3: Generating content indices..." @just ../dev::content-generate-indices @echo "๐Ÿ—๏ธ Step 4: Building application with content-static..." cargo leptos build --features content-static --release @echo "โœ… Production build complete!" @echo "๐Ÿ“ Output: target/site/" @echo "๐Ÿš€ Run with: cargo run --features content-static --release" # Build for development (fast) [no-cd] dev: @echo "๐Ÿš€ Building for development..." # @just ../dev::css-build # @just ../dev::content-generate-indices cargo leptos build --features content-static @echo "โœ… Development build complete!" # Serve built application in production mode [no-cd] serve-prod: @echo "๐Ÿš€ Serving application in production mode..." @echo "๐Ÿ“ Content source: ${SITE_CONTENT_PATH:-site/content} (runtime processing)" @echo "๐Ÿ”„ Features: content-static (optimized)" @echo "๐Ÿ Built app: /target/site" cargo run --features content-static --release # Serve with full CMS features (database + API) [no-cd] serve-cms: @echo "๐Ÿš€ Serving application with full CMS features..." @echo "๐Ÿ“ Content source: ${SITE_CONTENT_PATH:-site/content} + Database" @echo "๐Ÿ”„ Features: content-db (includes API + WebSocket)" @echo "๐ŸŽ›๏ธ Admin interface available" cargo run --features content-db --release # Build the project for development [no-cd] basic: @echo "๐Ÿ”จ Building project for development..." cargo leptos build # Build everything (CSS + Content) all: @echo "๐Ÿ”จ Building all assets..." @just ../dev::css-build @just ../dev::content-build # Build the project and leptos serve [no-cd] serve: @echo "๐Ÿ”จ Building project and Leptos serve..." cargo leptos serve # Build the project for production (legacy - use 'just build-prod' instead) prod-legacy: @echo "โš ๏ธ DEPRECATED: Building project for production with legacy script..." @echo "๐Ÿ’ก Use 'just build::prod' instead for the unified pipeline" {{ justfile_directory() }}/scripts/build/leptos-build.sh # Build with specific features [no-cd] features features: @echo "๐Ÿ”จ Building with features: {{ features }}..." cargo leptos build --features {{ features }} # Build the project with Cargo [no-cd] cargo *ARGS: @echo "๐Ÿ”จ Building project with Cargo..." cargo build {{ ARGS }} # Clean build artifacts [no-cd] clean: @echo "๐Ÿงน Cleaning build artifacts..." cargo clean rm -rf target/ rm -rf node_modules/ # ============================================================================= # CONTENT CONVERSION COMMANDS # ============================================================================= # Build markdown converter binary [no-cd] content-converter: @echo "๐Ÿ”ง Building markdown converter with content-static feature..." cargo build --bin markdown_converter --features content-static # ============================================================================= # DISTRIBUTION COMMANDS # ============================================================================= # Assemble a transportable distro tarball from provisioning/distro.ncl โ€” the PV # payload (site_tree) plus the active profile's artifacts (Leptos pkg/, or none # for htmx-ssr), normalised into the /var/www/site layout. Profile auto-detected # from rendering.ncl unless given. Supersedes dist-pack (stale dist-list-files). [no-cd] distro profile="": @nu {{ justfile_directory() }}/scripts/build/distro.nu {{ profile }} # DEPRECATED: use `just build::distro`. dist-list-files drifted from the layout. dist-pack-nu target: @echo "โš ๏ธ DEPRECATED: use 'just build::distro' (reads provisioning/distro.ncl)" nu {{ justfile_directory() }}/scripts/build/dist-pack.nu {{ target }} # DEPRECATED: use `just build::distro`. dist-pack target: @echo "โš ๏ธ DEPRECATED: use 'just build::distro' (reads provisioning/distro.ncl)" {{ justfile_directory() }}/scripts/build/dist-pack.sh {{ target }} # Cross-platform build (Nushell version) cross-nu: @echo "๐Ÿ“ฆ Build for linux/amd64 and pack Project for distribution (Nushell)..." nu {{ justfile_directory() }}/scripts/build/cross-build.nu # Cross-platform build (Bash fallback) cross: @echo "๐Ÿ“ฆ Build for linux/amd64 and pack Project for distribution (Bash)..." {{ justfile_directory() }}/scripts/build/cross-build.sh # ============================================================================= # DOCKER BUILD COMMANDS # ============================================================================= # Build Docker image (context assembly + lamina pre-flight via ctx-test.nu) docker: nu {{ justfile_directory() }}/lian-build/ctx-test.nu --run # Build Docker cross-compilation image (Nushell version) docker-cross-nu: @echo "๐Ÿณ Building Docker cross-compilation image (Nushell)..." nu {{ justfile_directory() }}/scripts/build/build-docker-cross.nu # Build Docker image for development docker-dev: @echo "๐Ÿณ Building Docker development image..." docker build -f Dockerfile.dev -t rustelo:dev . # ============================================================================= # DEPENDENCY SYNC - rustelo registry โ†’ this project's workspace.dependencies # ============================================================================= # The single source of truth is `../rustelo/registry/Cargo.toml` (editable in # Zed via rust-analyzer's inline upgrade hints). These recipes pull the # canonical versions into this project's managed Cargo.toml region without # leaving the project root. Overlay (features + extras) comes from this # project's `rustelo-deps-overlay.toml`. # # CARGO_TARGET_DIR override matches the pre-commit hook: keeps the xtask build # off the framework's volume-pinned target dir when that volume is unmounted. # Pull canonical workspace deps from rustelo into this project's Cargo.toml. [no-cd] deps-sync: @echo "๐Ÿ”— Syncing Cargo.toml from ../rustelo/registry/Cargo.toml..." CARGO_TARGET_DIR="${CARGO_TARGET_DIR:-target/xtask}" \ cargo run --manifest-path ../rustelo/xtask/Cargo.toml --quiet -- \ sync-deps --rustelo-root ../rustelo --target . # Verify this project's Cargo.toml matches rustelo's registry (exit 1 if drifted). [no-cd] deps-sync-check: @echo "๐Ÿ” Checking Cargo.toml for drift from ../rustelo/registry..." CARGO_TARGET_DIR="${CARGO_TARGET_DIR:-target/xtask}" \ cargo run --manifest-path ../rustelo/xtask/Cargo.toml --quiet -- \ sync-deps --check --rustelo-root ../rustelo --target .