syntaxis/Justfile
Jesús Pérez 9cef9b8d57 refactor: consolidate configuration directories
Merge _configs/ into config/ for single configuration directory.
Update all path references.

Changes:
- Move _configs/* to config/
- Update .gitignore for new patterns
- No code references to _configs/ found

Impact: -1 root directory (layout_conventions.md compliance)
2025-12-26 18:36:23 +00:00

467 lines
20 KiB
Makefile

# syntaxis Justfile
# Master justfile for the entire syntaxis monorepo
# Based on rust-modular template with NuShell + Rust hybrid support
set shell := ["nu", "-c"]
# Default recipe (show help)
default:
@just help
# ═══════════════════════════════════════════════════════════════════════════
# ⓘ HELP & STATUS
# ═══════════════════════════════════════════════════════════════════════════
# Show help with all available recipes
help:
@print ""
@print "🎯 syntaxis Just Recipes"
@print ""
@print "BUILD RECIPES:"
@print " just check Check compilation (workspace)"
@print " just build Build debug binaries"
@print " just build-release Build optimized release binaries"
@print " just build-watch Watch mode: rebuild on file changes"
@print ""
@print "TESTING RECIPES:"
@print " just test Run all library tests"
@print " just test-verbose Run tests with output"
@print " just test-integration Run integration tests"
@print " just test-all Run all tests (lib + integration)"
@print " just test-watch Watch mode: continuous testing"
@print " just test-coverage Generate test coverage reports"
@print ""
@print "CODE QUALITY RECIPES:"
@print " just fmt Format code (cargo fmt)"
@print " just fmt-check Check formatting without changes"
@print " just lint Lint code (clippy)"
@print " just lint-pedantic Lint with pedantic warnings"
@print " just audit Security audit of dependencies"
@print " just check-deps Validate dependency versions"
@print " just sync-deps Sync dependencies interactively"
@print " just check-all Run all checks (fmt → lint → check → test → audit → check-deps)"
@print ""
@print "DOCUMENTATION RECIPES:"
@print " just doc Generate and open Rust documentation"
@print ""
@print "RUNNING & BUILDING RECIPES:"
@print " just run-cli [ARGS] Run workspace CLI"
@print " just run-tui Run workspace TUI"
@print " just run-api Run workspace API with Leptos dashboard"
@print " just dev-dashboard Dev server for Leptos dashboard (port 8080)"
@print " just build-dashboard Build Leptos dashboard (release)"
@print " just build-dashboard-dev Build Leptos dashboard (debug)"
@print " just check-dashboard-tools Check if dashboard prerequisites installed"
@print " just install-dashboard-tools Install missing dashboard prerequisites"
@print ""
@print "INSTALLATION PRESETS:"
@print " just install-list List all available presets"
@print " just install-minimal Install minimal (CLI only)"
@print " just install-local Install local (simple dev)"
@print " just install-dev Install dev (full-stack with services)"
@print " just install-staging Install staging (Docker/CI-CD)"
@print " just install-production Install production (Kubernetes)"
@print " just install-interactive Interactive installation"
@print " just install-generate PRESET Generate config for preset"
@print " just detect-provctl Check provctl availability"
@print " just services CMD PRESET Manage services (list/deploy/start/stop)"
@print " just test-provisioning Run provisioning tests"
@print ""
@print "SCRIPTS RECIPES:"
@print " just scripts-list List available binaries"
@print " just scripts-install Install all binaries"
@print " just scripts-status Show installation status"
@print ""
@print "DEVELOPMENT RECIPES:"
@print " just init Initialize development environment"
@print " just check-tools Validate required development tools"
@print " just info Show workspace information"
@print " just status Show current build/test status"
@print ""
@print "CLEANUP RECIPES:"
@print " just clean Clean all build artifacts"
@print ""
@print "Use 'just <recipe-name>' to run a recipe"
@print ""
# Show detailed help
help-full: help
@print "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
@print ""
@print "EXAMPLES:"
@print " # Build and run all tests"
@print " just build && just test-all"
@print ""
@print " # Continuous development: watch mode for compilation and tests"
@print " just build-watch # In one terminal"
@print " just test-watch # In another terminal"
@print ""
@print " # Full verification before committing"
@print " just check-all"
@print ""
@print " # Install binaries and check installation"
@print " just scripts-install && just scripts-status"
@print ""
@print " # Generate documentation"
@print " just doc"
@print ""
@print "WORKSPACE STRUCTURE:"
@print " shared/ # Shared libraries (rust-api, rust-tui, rust)"
@print " syntaxis/ # Main project (6+ crates)"
@print " scripts/ # Build and infrastructure scripts"
@print " .claude/ # Development guidelines"
@print " Justfile # This file (root justfile)"
@print ""
@print "RELATED DOCUMENTATION:"
@print " README.md # Project overview"
@print " .claude/PROJECT_RULES.md # Architecture and standards"
@print " .claude/CODE_STANDARDS.md # Testing and verification standards"
@print " scripts/README.md # Scripts documentation"
@print ""
# Show workspace information and tool versions
info:
@print ""
@print "📊 syntaxis Project Information"
@print "────────────────────────────────────────"
@print ""
@print "📍 Location: /Users/Akasha/Development/syntaxis"
@print ""
@print "🔧 Tool Versions:"
@cargo --version
@rustc --version
@nu --version
@print ""
@print "📦 Workspace Members (6 active, 2 WIP):"
@print " ✅ syntaxis-core - Core library (173 tests)"
@print " ✅ syntaxis-cli - CLI tool"
@print " ✅ syntaxis-tui - Terminal UI (10 tests)"
@print " ✅ syntaxis-dashboard - Web Dashboard (52 tests)"
@print " ✅ dashboard-client - Dashboard client (4 tests)"
@print " ✅ dashboard-shared - Shared types (5 tests)"
@print " 🟡 syntaxis-api - REST API (37 errors - WIP)"
@print " 🟡 syntaxis-vapora - VAPORA adapter (planned)"
@print ""
@print "📊 Test Status: 632/632 tests passing ✅"
@print ""
# Check development tools are available
check-tools:
@print "🔧 Checking development tools..."
@print ""
@try { cargo --version; print " ✅ cargo found" } catch { print " ❌ cargo NOT found" }
@try { rustc --version; print " ✅ rustc found" } catch { print " ❌ rustc NOT found" }
@try { nu --version; print " ✅ nushell found" } catch { print " ❌ nushell NOT found" }
@try { which cargo-fmt; print " ✅ cargo-fmt found" } catch { print " ⚠️ cargo-fmt not found" }
@try { which cargo-clippy; print " ✅ cargo-clippy found" } catch { print " ⚠️ cargo-clippy not found" }
@print ""
# Initialize development environment
init: check-tools
@print "🚀 Initializing syntaxis development environment..."
@print ""
mkdir -p .syntaxis
mkdir -p .project-tools
@print "✅ Created workspace directories"
@print ""
@print "Next steps:"
@print " 1. Run: just install-scripts (to install binary management scripts)"
@print " 2. Run: just build (to build the project)"
@print " 3. Run: just test (to run tests)"
@print ""
# Show build and test status
status:
@print "📈 syntaxis Status"
@print "────────────────────────────"
@print ""
cargo --version
rustc --version
@print ""
@print "Recent changes:"
@(cd syntaxis && git log --oneline -5 2>/dev/null || echo " (not a git repository)")
@print ""
# ═══════════════════════════════════════════════════════════════════════════
# 🏗️ BUILD RECIPES
# ═══════════════════════════════════════════════════════════════════════════
# Check entire workspace compiles
check:
@echo "🔍 Checking workspace..."
cargo check --workspace
# Build debug binaries
build:
@echo "🏗️ Building debug binaries..."
cargo build --workspace
# Build optimized release binaries
build-release:
@echo "🚀 Building release binaries..."
cargo build --workspace --release
# Watch mode: rebuild on file changes
build-watch:
@echo "👀 Watching for changes (build mode)..."
cargo watch -x 'build --workspace'
# ═══════════════════════════════════════════════════════════════════════════
# 🧪 TESTING RECIPES
# ═══════════════════════════════════════════════════════════════════════════
# Run all library tests
test:
@echo "🧪 Running library tests..."
cargo test --workspace --lib -- --test-threads=1
# Run tests with output
test-verbose:
@echo "🧪 Running tests (verbose)..."
RUST_LOG=debug cargo test --workspace --lib -- --nocapture --test-threads=1
# Run integration tests
test-integration:
@echo "🧪 Running integration tests..."
cargo test --workspace --test '*' -- --test-threads=1
# Run all tests (library + integration)
test-all:
@echo "🧪 Running all tests..."
cargo test --workspace -- --test-threads=1
# Watch mode: continuous testing
test-watch:
@echo "👀 Watching for changes (test mode)..."
cargo watch -x 'test --workspace --lib'
# Generate test coverage reports
test-coverage:
@echo "📊 Generating test coverage..."
@echo "Note: requires cargo-tarpaulin or cargo-llvm-cov"
@(cargo tarpaulin --workspace --out Html || echo "⚠️ cargo-tarpaulin not found")
# ═══════════════════════════════════════════════════════════════════════════
# 📝 CODE QUALITY RECIPES
# ═══════════════════════════════════════════════════════════════════════════
# Format code with cargo fmt
fmt:
@echo "📝 Formatting code..."
cargo fmt --all
# Check formatting without making changes
fmt-check:
@echo "📝 Checking code format..."
cargo fmt --all -- --check
# Lint code with clippy
lint:
@echo "🔎 Linting code..."
cargo clippy --all-targets --all-features
# Lint with pedantic warnings
lint-pedantic:
@echo "🔎 Linting with pedantic warnings..."
cargo clippy --all-targets --all-features -- -W clippy::all -W clippy::pedantic
# Security audit of dependencies
audit:
@echo "🔐 Running security audit..."
cargo audit
# Validate dependency versions against canonical registry
check-deps:
@echo "🔍 Validating dependency versions..."
dependency-manager validate
# Sync dependencies interactively (fix mismatches)
sync-deps:
@echo "🔄 Synchronizing dependencies..."
dependency-manager sync --interactive
# Show canonical dependency registry
show-deps:
@echo "📋 Canonical Dependency Registry:"
@echo ""
dependency-manager registry
# Full verification: fmt → lint → check → test → audit → check-deps
check-all:
@echo "✅ Running full verification suite..."
@echo ""
@echo "Step 1/6: Formatting..."
just fmt
@echo ""
@echo "Step 2/6: Linting..."
just lint
@echo ""
@echo "Step 3/6: Checking compilation..."
just check
@echo ""
@echo "Step 4/6: Running tests..."
just test-all
@echo ""
@echo "Step 5/6: Security audit..."
just audit
@echo ""
@echo "Step 6/6: Validating dependencies..."
just check-deps
@echo ""
@echo "✅ All checks passed successfully!"
# ═══════════════════════════════════════════════════════════════════════════
# 📚 DOCUMENTATION RECIPES
# ═══════════════════════════════════════════════════════════════════════════
# Generate and open Rust documentation
doc:
@echo "📚 Generating documentation..."
cargo doc --workspace --no-deps --open
# ═══════════════════════════════════════════════════════════════════════════
# 🚀 RUNNING RECIPES
# ═══════════════════════════════════════════════════════════════════════════
# Run syntaxis CLI
run-cli *args:
@echo "🚀 Running syntaxis CLI..."
cargo run -p syntaxis-cli -- {{ args }}
# Run syntaxis TUI
run-tui:
@echo "🚀 Starting syntaxis TUI..."
cargo run -p syntaxis-tui
# Run syntaxis API with dashboard (serves WASM at root)
run-api:
@echo "🚀 Starting syntaxis API with Leptos dashboard..."
cargo run -p syntaxis-api
# Build Leptos WASM dashboard (release mode)
build-dashboard:
@echo "🎨 Building Leptos WASM dashboard..."
nu scripts/core/build-dashboard.nu build
# Build Leptos WASM dashboard (development mode)
build-dashboard-dev:
@echo "🎨 Building Leptos WASM dashboard (dev mode)..."
nu scripts/core/build-dashboard.nu build --dev
# Run Leptos dashboard dev server (port 8080, proxies API)
dev-dashboard:
@echo "👀 Starting Leptos dashboard dev server (port 8080)..."
@echo " • Dashboard: http://localhost:8080"
@echo " • API proxy: /api → http://localhost:3000/api"
@echo " • Make sure API server is running: just run-api"
@echo ""
cd core && trunk serve --port 8080 --proxy-backend=http://localhost:3000/api
# Check dashboard build prerequisites
check-dashboard-tools:
@echo "🔧 Checking dashboard prerequisites..."
nu scripts/core/build-dashboard.nu check-install
# Install dashboard build prerequisites
install-dashboard-tools:
@echo "📦 Installing dashboard prerequisites..."
nu scripts/core/build-dashboard.nu install
# ═══════════════════════════════════════════════════════════════════════════
# 🚀 INSTALLATION PRESETS (with provctl integration)
# ═══════════════════════════════════════════════════════════════════════════
# List all available installation presets
install-list:
@echo "📋 Available installation presets:"
nu scripts/provisioning/install-with-presets.nu --list-presets
# Install with minimal preset (CLI only)
install-minimal:
@echo "🔨 Installing with minimal preset (CLI only)..."
nu scripts/provisioning/install-with-presets.nu --preset minimal
# Install with local preset (default - simple development)
install-local:
@echo "🔨 Installing with local preset (simple development)..."
nu scripts/provisioning/install-with-presets.nu --preset local
# Install with dev preset (full-stack with services)
install-dev:
@echo "🔨 Installing with dev preset (full-stack with services)..."
nu scripts/provisioning/install-with-presets.nu --preset dev --verbose
# Install with staging preset (Docker/CI-CD environment)
install-staging:
@echo "🔨 Installing with staging preset (Docker/CI-CD)..."
nu scripts/provisioning/install-with-presets.nu --preset staging --verbose
# Install with production preset (Kubernetes/Enterprise)
install-production:
@echo "🔨 Installing with production preset (Kubernetes)..."
nu scripts/provisioning/install-with-presets.nu --preset production --verbose
# Interactive installation (guided setup)
install-interactive:
@echo "🔨 Starting interactive installation..."
nu scripts/provisioning/install-with-presets.nu --interactive
# Generate installation configuration (no installation)
install-generate [PRESET="dev"]:
@echo "📝 Generating configuration for preset: {{PRESET}}"
nu scripts/provisioning/install-with-presets.nu --preset {{PRESET}} --generate-config
# Install from configuration file
install-config [CONFIG_FILE]:
@echo "📦 Installing from configuration: {{CONFIG_FILE}}"
nu scripts/provisioning/install-with-presets.nu --config {{CONFIG_FILE}}
# Detect provctl availability
detect-provctl:
@echo "🔍 Detecting provctl..."
nu scripts/provisioning/detect-provctl.nu --verbose
# Manage services (list, deploy, start, stop, status)
services [COMMAND="list", PRESET="dev"]:
@echo "🎮 Service management: {{COMMAND}} {{PRESET}}"
nu scripts/provisioning/provctl-services.nu {{COMMAND}} {{PRESET}}
# Test provisioning setup
test-provisioning:
@echo "🧪 Testing provisioning configuration..."
nu tests/provisioning/test-all.nu
# ═══════════════════════════════════════════════════════════════════════════
# 📦 SCRIPTS RECIPES
# ═══════════════════════════════════════════════════════════════════════════
# List available binaries
scripts-list:
@echo "📦 Available binaries:"
nu scripts/install-cli.nu list
# Install all binaries (workspace, syntaxis-tui, syntaxis-dashboard)
scripts-install:
@echo "📦 Installing binaries..."
nu scripts/install-cli.nu all
# Show binary installation status
scripts-status:
@echo "📊 Installation status:"
nu scripts/install-cli.nu status
# Show full installation manifest
scripts-manifest:
@echo "📋 Installation manifest:"
nu scripts/manifest.nu show-manifest
# ═══════════════════════════════════════════════════════════════════════════
# 🧹 CLEANUP RECIPES
# ═══════════════════════════════════════════════════════════════════════════
# Clean all build artifacts
clean:
@echo "🧹 Cleaning build artifacts..."
cargo clean
@echo "✅ Clean complete"