# ╔══════════════════════════════════════════════════════════════════════╗ # ║ BUILD RECIPES ║ # ║ Build workspace with different feature flags ║ # ╚══════════════════════════════════════════════════════════════════════╝ # === FEATURE FLAGS === FEATURES_CLI := "cli,i18n,templates" FEATURES_TUI := "tui,i18n,templates" FEATURES_WEB := "web,i18n,templates" FEATURES_ALL_BACKENDS := "cli,tui,web" FEATURES_FULL := "cli,tui,web,i18n,templates" # Help for build module help: @echo "BUILD MODULE" @echo "" @echo "Build default (CLI + i18n + templates):" @echo " just build::default" @echo "" @echo "Build specific backends:" @echo " just build::cli Build CLI backend" @echo " just build::tui Build TUI backend" @echo " just build::web Build Web backend" @echo "" @echo "Build combined:" @echo " just build::all Build all backends" @echo " just build::all-backends Build all in one" @echo " just build::full Build all features" @echo "" @echo "Build release:" @echo " just build::release Release build (all features)" @echo "" @echo "Check compilation:" @echo " just build::check Check without building" # === DEFAULT BUILD === # Build workspace with default features [doc("Build default: CLI + i18n + templates")] default: @echo "=== Building default features ===" cargo build --workspace @echo "✓ Default build complete" # === INDIVIDUAL BACKENDS === # Build CLI backend only [doc("Build CLI backend")] cli: @echo "=== Building CLI backend ===" cargo build -p typedialog-core --features "{{ FEATURES_CLI }}" cargo build -p typedialog @echo "✓ CLI backend ready" # Build TUI backend only [doc("Build TUI backend")] tui: @echo "=== Building TUI backend ===" cargo build -p typedialog-core --features "{{ FEATURES_TUI }}" cargo build -p typedialog-tui @echo "✓ TUI backend ready" # Build Web backend only [doc("Build Web backend")] web: @echo "=== Building Web backend ===" cargo build -p typedialog-core --features "{{ FEATURES_WEB }}" cargo build -p typedialog-web @echo "✓ Web backend ready" # === COMBINED BUILDS === # Build all backends (cli, tui, web) [doc("Build all backends together")] all-backends: @echo "=== Building all backends ===" cargo build -p typedialog-core --features "{{ FEATURES_ALL_BACKENDS }},i18n,templates" cargo build -p typedialog cargo build -p typedialog-tui cargo build -p typedialog-web @echo "✓ All backends ready" # Build everything (all features) [doc("Build with all features")] full: @echo "=== Building with full feature set ===" cargo build --workspace --all-features @echo "✓ Full build complete" # Build all variants [doc("Build all: default + all backends + release")] all: just build::default just build::all-backends just build::release @echo "✓ All builds complete" # === RELEASE BUILD === # Release build with all features [doc("Release build: optimized, all features")] release: @echo "=== Building release (optimized) ===" cargo build --workspace --all-features --release @echo "" @echo "Binaries ready:" @ls -lh target/release/typedialog* 2>/dev/null | awk '{print " " $NF " (" $5 ")"}' @echo "✓ Release build complete" # === VALIDATION === # Check workspace compilation without building [doc("Check compilation (no build)")] check: @echo "=== Checking compilation ===" cargo check --workspace --all-features @echo "✓ Compilation check passed"