118 lines
3.9 KiB
Plaintext
118 lines
3.9 KiB
Plaintext
|
|
# ╔══════════════════════════════════════════════════════════════════════╗
|
||
|
|
# ║ 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"
|