TypeDialog/justfiles/build.just
2025-12-18 01:18:59 +00:00

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"