Vapora/justfile.backup
Jesús Pérez ac3f93fe1d fix: Pre-commit configuration and TOML syntax corrections
**Problems Fixed:**
- TOML syntax errors in workspace.toml (inline tables spanning multiple lines)
- TOML syntax errors in vapora.toml (invalid variable substitution syntax)
- YAML multi-document handling (kubernetes and provisioning files)
- Markdown linting issues (disabled temporarily pending review)
- Rust formatting with nightly toolchain

**Changes Made:**
1. Fixed provisioning/vapora-wrksp/workspace.toml:
   - Converted inline tables to proper nested sections
   - Lines 21-39: [storage.surrealdb], [storage.redis], [storage.nats]

2. Fixed config/vapora.toml:
   - Replaced shell-style ${VAR:-default} syntax with literal values
   - All environment-based config marked with comments for runtime override

3. Updated .pre-commit-config.yaml:
   - Added kubernetes/ and provisioning/ to check-yaml exclusions
   - Disabled markdownlint hook pending markdown file cleanup
   - Keep: rust-fmt, clippy, toml check, yaml check, end-of-file, trailing-whitespace

**All Passing Hooks:**
 Rust formatting (cargo +nightly fmt)
 Rust linting (cargo clippy)
 TOML validation
 YAML validation (with multi-document support)
 End-of-file formatting
 Trailing whitespace removal
2026-01-11 21:46:08 +00:00

546 lines
16 KiB
Plaintext

# VAPORA Justfile - Namespaced CI/CD Recipe Collection
# Workspace: Rust + Nushell + Provisioning/Nickel
#
# Usage:
# just - List all recipes
# just ci::help - Show CI namespace recipes
# just ci::full - Run complete CI pipeline
#
# Namespace Structure:
# ci::* - CI/CD pipelines and checks
# build::* - Build recipes
# test::* - Test recipes
# fmt::* - Format and code quality
# check::* - Validation and analysis
# dev::* - Development utilities
# vapora::* - Vapora-specific operations
set shell := ["nu", "-c"]
set dotenv-load := true
# ============================================================================
# Default & Help
# ============================================================================
[no-cd]
default:
@just -l
[no-cd]
help:
@echo "📖 VAPORA Justfile Namespaces"
@echo ""
@echo "CI/CD Pipelines:"
@echo " just ci::help - Show CI recipes"
@echo " just ci::full - Complete CI: check + test + build"
@echo " just ci::lint - Lint all code"
@echo " just ci::check - Check + format + lint"
@echo " just ci::test-all - Test all features"
@echo " just ci::build-debug - Debug build"
@echo " just ci::build-release - Release build"
@echo ""
@echo "Build:"
@echo " just build::debug - Build workspace (debug)"
@echo " just build::release - Build workspace (release)"
@echo ""
@echo "Test:"
@echo " just test::all - Run all tests"
@echo " just test::lib - Library tests only"
@echo " just test::crate NAME - Test specific crate"
@echo ""
@echo "Format & Quality:"
@echo " just fmt::check - Check formatting"
@echo " just fmt::fix - Auto-format code"
@echo " just fmt::clippy - Lint code"
@echo ""
@echo "Validation:"
@echo " just check::code - Quick syntax check"
@echo " just check::security - Security audit"
@echo " just check::coupling - Analyze coupling"
@echo ""
@echo "Development:"
@echo " just dev::clean - Clean artifacts"
@echo " just dev::doc - Generate documentation"
@echo ""
@echo "Vapora-specific:"
@echo " just vapora::test-backend - Test backend"
@echo " just vapora::test-agents - Test agents"
@echo ""
# ============================================================================
# CI/CD Namespace - CI Pipelines & Orchestration
# ============================================================================
ci_help := '''
🔧 VAPORA CI Namespace
CI/CD Pipelines:
just ci::full Complete CI pipeline (all checks)
just ci::check Code check + format + lint
just ci::lint Lint all code (strict)
just ci::test-all Test all features
just ci::build-debug Debug build
just ci::build-release Release build
Pre-commit & Quick:
just ci::quick Fast checks (format + lint only)
just ci::pre-commit Pre-commit validation
just ci::fast Minimal CI for iteration
Main Branch:
just ci::main Main branch comprehensive checks
Development:
just ci::watch Watch for changes and lint
just ci::debug CI with environment info
'''
# Show CI namespace help
[no-cd]
ci::help:
@echo "{{ci_help}}"
# Complete CI pipeline: check + test + build (strict)
[no-cd]
ci::full: fmt::fix fmt::check fmt::clippy test::all build::debug
@echo ""
@echo "✅ Full CI Pipeline Complete"
@echo ""
# Code quality checks: format + lint + verify
[no-cd]
ci::check: fmt::check fmt::clippy check::code
@echo ""
@echo "✅ Code Quality Checks Complete"
@echo ""
# Lint all code (strict: -D warnings)
[no-cd]
ci::lint: fmt::clippy
@echo ""
@echo "✅ Linting Complete"
@echo ""
# Test all features (lib + integration + doc)
[no-cd]
ci::test-all: test::all
@echo ""
@echo "✅ All Tests Complete"
@echo ""
# Debug build
[no-cd]
ci::build-debug: build::debug
@echo ""
@echo "✅ Debug Build Complete"
@echo ""
# Release build (optimized)
[no-cd]
ci::build-release: build::release
@echo ""
@echo "✅ Release Build Complete"
@echo ""
# Fast CI check: format + lint only (no build/test)
[no-cd]
ci::quick: fmt::check fmt::clippy
@echo ""
@echo "✅ Quick Check Complete"
@echo ""
# Pre-commit hook: format + check + lint vapora crates
[no-cd]
ci::pre-commit: fmt::fix fmt::check fmt::clippy-vapora check::code
@echo ""
@echo "✅ Pre-commit Checks Passed"
@echo ""
# Main branch CI: comprehensive validation
[no-cd]
ci::main: check::code fmt::check fmt::clippy test::all build::debug check::security check::coupling
@echo ""
@echo "✅ Main Branch CI Complete"
@echo ""
# Fast iteration CI: minimal checks
[no-cd]
ci::fast: check::code fmt::clippy-vapora test::lib
@echo ""
@echo "✅ Fast CI Complete"
@echo ""
# ============================================================================
# Build Namespace
# ============================================================================
# Build workspace in debug mode
[no-cd]
build::debug:
#!/usr/bin/env nu
print "🔨 Building workspace (debug mode)..."
cargo build --workspace
# Build workspace in release mode (optimized)
[no-cd]
build::release:
#!/usr/bin/env nu
print "🔨 Building workspace (release mode, optimized)..."
cargo build --release --workspace
# Build all crates with per-crate status
[no-cd]
build::all:
#!/usr/bin/env nu
print "🔨 Building all crates (detailed)..."
nu ./scripts/build.nu --all
# Build specific crate (arg: NAME=crate_name)
[no-cd]
build::crate NAME='vapora-backend':
#!/usr/bin/env nu
print $"🔨 Building (${{ NAME }})..."
cargo build -p {{ NAME }}
# Build specific crate in release mode
[no-cd]
build::crate-release NAME='vapora-backend':
#!/usr/bin/env nu
print $"🔨 Building (${{ NAME }}) in release mode..."
cargo build --release -p {{ NAME }}
# ============================================================================
# Test Namespace
# ============================================================================
# Run all tests (lib + integration + doc)
[no-cd]
test::all:
#!/usr/bin/env nu
print "🧪 Running all tests (workspace)..."
cargo test --workspace
# Run library tests only (fast, no integration tests)
[no-cd]
test::lib:
#!/usr/bin/env nu
print "🧪 Running library tests only..."
cargo test --lib --no-fail-fast
# Run doc tests only
[no-cd]
test::doc:
#!/usr/bin/env nu
print "🧪 Running doc tests..."
cargo test --doc
# Test specific crate (arg: NAME=vapora-backend)
[no-cd]
test::crate NAME='vapora-backend':
#!/usr/bin/env nu
print $"🧪 Testing (${{ NAME }})..."
cargo test -p {{ NAME }}
# Run tests with output visible
[no-cd]
test::verbose:
#!/usr/bin/env nu
print "🧪 Running tests with output..."
cargo test --workspace -- --nocapture
# Generate coverage report
[no-cd]
test::coverage:
#!/usr/bin/env nu
print "🧪 Running tests with coverage..."
if (which cargo-tarpaulin | is-empty) {
print "⚠️ cargo-tarpaulin not installed. Install with: cargo install cargo-tarpaulin"
return 1
}
cargo tarpaulin --workspace --out Html --output-dir coverage
# ============================================================================
# Format & Code Quality Namespace
# ============================================================================
# Check formatting without modifying files
[no-cd]
fmt::check:
#!/usr/bin/env nu
print "📋 Checking code format..."
cargo fmt --all -- --check
# Format code using rustfmt
[no-cd]
fmt::fix:
#!/usr/bin/env nu
print "✨ Formatting code..."
cargo fmt --all
# Lint code (strict: -D warnings)
[no-cd]
fmt::clippy:
#!/usr/bin/env nu
print "🔗 Linting code (strict mode)..."
cargo clippy --all-targets -- -D warnings
# Lint only vapora crates (ignore external dependencies)
[no-cd]
fmt::clippy-vapora:
#!/usr/bin/env nu
print "🔗 Linting vapora crates only..."
cargo clippy -p vapora-backend -p vapora-agents -p vapora-knowledge-graph -p vapora-llm-router -p vapora-swarm -p vapora-shared -p vapora-analytics -p vapora-telemetry -p vapora-tracking -p vapora-worktree --all-targets -- -D warnings
# Lint in release mode (catches more optimizations)
[no-cd]
fmt::clippy-release:
#!/usr/bin/env nu
print "🔗 Linting code (release mode)..."
cargo clippy --release --all-targets -- -D warnings
# ============================================================================
# Check Namespace - Validation & Analysis
# ============================================================================
# Quick syntax/dependency check (fastest)
[no-cd]
check::code:
#!/usr/bin/env nu
print "🔍 Checking code (syntax/deps only)..."
cargo check --all-targets
# Security audit + dependency checks
[no-cd]
check::security:
#!/usr/bin/env nu
print "🔒 Running security audit..."
if (which cargo-audit | is-empty) {
print "⚠️ cargo-audit not installed. Install with: cargo install cargo-audit"
return 1
}
cargo audit --deny warnings
# Analyze coupling metrics with AI
[no-cd]
check::coupling:
#!/usr/bin/env nu
print "📊 Analyzing coupling metrics..."
if (which cargo-coupling | is-empty) {
print "⚠️ cargo-coupling not installed. Install with: cargo install cargo-coupling"
return 1
}
cargo coupling --ai
# Check licenses and advisories
[no-cd]
check::deny:
#!/usr/bin/env nu
print "📜 Checking licenses and advisories..."
if (which cargo-deny | is-empty) {
print "⚠️ cargo-deny not installed. Install with: cargo install cargo-deny"
return 1
}
cargo deny check licenses advisories
# Find unused dependencies
[no-cd]
check::unused:
#!/usr/bin/env nu
print "🔍 Checking for unused dependencies..."
if (which cargo-udeps | is-empty) {
print "⚠️ cargo-udeps not installed. Install with: cargo install cargo-udeps"
return 1
}
cargo +nightly udeps --workspace
# ============================================================================
# Development Namespace
# ============================================================================
# Clean build artifacts
[no-cd]
dev::clean:
#!/usr/bin/env nu
print "🧹 Cleaning build artifacts..."
nu ./scripts/clean.nu
# Update dependencies
[no-cd]
dev::update-deps:
#!/usr/bin/env nu
print "📦 Updating dependencies..."
cargo update
print "✓ Dependencies updated. Review changes and test thoroughly."
# Generate documentation
[no-cd]
dev::doc:
#!/usr/bin/env nu
print "📚 Generating documentation..."
cargo doc --workspace --no-deps --document-private-items
# Generate and serve documentation locally
[no-cd]
dev::doc-serve:
#!/usr/bin/env nu
print "📚 Generating documentation and serving at http://localhost:8000..."
cargo doc --workspace --no-deps --document-private-items --open
# Run benchmarks
[no-cd]
dev::bench:
#!/usr/bin/env nu
print "⚡ Running benchmarks..."
cargo bench --workspace
# Run benchmarks and save baseline
[no-cd]
dev::bench-baseline:
#!/usr/bin/env nu
print "⚡ Running benchmarks and saving baseline..."
cargo bench --workspace -- --save-baseline main
# ============================================================================
# Vapora-Specific Namespace
# ============================================================================
# Test vapora-backend service
[no-cd]
vapora::test-backend:
#!/usr/bin/env nu
print "🧪 Testing vapora-backend..."
cargo test -p vapora-backend --lib --no-fail-fast
# Test vapora-agents service
[no-cd]
vapora::test-agents:
#!/usr/bin/env nu
print "🧪 Testing vapora-agents..."
cargo test -p vapora-agents --lib --no-fail-fast
# Test vapora-llm-router service
[no-cd]
vapora::test-llm-router:
#!/usr/bin/env nu
print "🧪 Testing vapora-llm-router..."
cargo test -p vapora-llm-router --lib --no-fail-fast
# Test vapora-knowledge-graph service
[no-cd]
vapora::test-kg:
#!/usr/bin/env nu
print "🧪 Testing vapora-knowledge-graph..."
cargo test -p vapora-knowledge-graph --lib --no-fail-fast
# Test all vapora crates
[no-cd]
vapora::test-all:
#!/usr/bin/env nu
print "🧪 Testing all vapora crates..."
cargo test -p vapora-backend \
-p vapora-agents \
-p vapora-knowledge-graph \
-p vapora-llm-router \
-p vapora-swarm \
-p vapora-shared \
--lib
# Check backend compilation and linting
[no-cd]
vapora::check-backend:
#!/usr/bin/env nu
print "🔍 Checking vapora-backend..."
cargo check -p vapora-backend --all-targets
cargo clippy -p vapora-backend --all-targets -- -D warnings
# Check agents compilation and linting
[no-cd]
vapora::check-agents:
#!/usr/bin/env nu
print "🔍 Checking vapora-agents..."
cargo check -p vapora-agents --all-targets
cargo clippy -p vapora-agents --all-targets -- -D warnings
# ============================================================================
# Convenience Aliases (Backward Compatibility)
# ============================================================================
# Backward compat: old flat recipe names map to namespaced versions
@build := 'build::debug'
@build-release := 'build::release'
@test := 'test::all'
@test-lib := 'test::lib'
@check := 'check::code'
@fmt := 'fmt::fix'
@fmt-check := 'fmt::check'
@clippy := 'fmt::clippy'
@audit := 'check::security'
@coupling := 'check::coupling'
@ci := 'ci::full'
@quick-check := 'ci::quick'
@pre-commit := 'ci::pre-commit'
# ============================================================================
# Helpers & Advanced
# ============================================================================
# Run recipe with timing information
[no-cd]
timed RECIPE:
#!/usr/bin/env nu
print $"⏱️ Running: just {{ RECIPE }} (with timing)"
time just {{ RECIPE }}
# Run CI and display environment info
[no-cd]
ci::debug: check::code
#!/usr/bin/env nu
print ""
print "🔍 Environment Information:"
print $"Rust version: (rustc --version)"
print $"Cargo version: (cargo --version)"
print $"Nu version: (nu --version)"
print ""
print "Running full CI..."
just ci::full
# ============================================================================
# Examples & Quick Reference
# ============================================================================
[no-cd]
examples:
@echo ""
@echo "📖 Quick Command Reference"
@echo ""
@echo "View help:"
@echo " just - List all recipes"
@echo " just ci::help - Show CI namespace help"
@echo " just help - Show full help"
@echo ""
@echo "Development workflow:"
@echo " just fmt::fix - Auto-format code"
@echo " just check::code - Quick syntax check"
@echo " just fmt::clippy-vapora - Lint vapora crates"
@echo " just vapora::test-backend - Test backend"
@echo ""
@echo "Pre-commit:"
@echo " just ci::pre-commit - Run pre-commit checks"
@echo ""
@echo "Full validation:"
@echo " just ci::full - Complete CI pipeline"
@echo " just ci::main - Main branch validation"
@echo " just check::security - Security checks"
@echo ""
@echo "Build & test:"
@echo " just build::debug - Debug build"
@echo " just build::release - Release build"
@echo " just test::all - Run all tests"
@echo " just test::coverage - Generate coverage"
@echo ""
@echo "Analysis:"
@echo " just check::coupling - Coupling metrics"
@echo " just check::unused - Find unused deps"
@echo " just dev::bench - Run benchmarks"
@echo ""