Vapora/scripts/build.nu
Jesús Pérez fe4d138a14
Some checks failed
Rust CI / Security Audit (push) Has been cancelled
Rust CI / Check + Test + Lint (nightly) (push) Has been cancelled
Rust CI / Check + Test + Lint (stable) (push) Has been cancelled
feat: CLI arguments, distribution management, and approval gates
- Add CLI support (--config, --help) with env var override for backend/agents
  - Implement distro justfile recipes: list-targets, install-targets, build-target, install
  - Fix OpenTelemetry API incompatibilities and remove deprecated calls
  - Add tokio "time" feature for timeout support
  - Fix Cargo profile warnings and Nushell script syntax
  - Update all dead_code warnings with strategic annotations
  - Zero compiler warnings in vapora codebase
  - Comprehensive CHANGELOG documenting risk-based approval gates system
2026-02-03 21:35:00 +00:00

99 lines
2.3 KiB
Plaintext

#!/usr/bin/env nu
# VAPORA Build Script
# Phase 0: Build all workspace crates
# Follows NUSHELL_GUIDELINES.md - 17 rules
# Build a single crate
def build-crate [crate_name: string, release: bool = false] {
print $"Building [($crate_name)]..."
let result = if $release {
do { cargo build --release -p $crate_name } | complete
} else {
do { cargo build -p $crate_name } | complete
}
if ($result.exit_code == 0) {
{
crate: $crate_name,
success: true,
error: null
}
} else {
{
crate: $crate_name,
success: false,
error: ($result.stderr | str trim)
}
}
}
# Build all workspace crates (sequentially to avoid cargo lock conflicts)
def build-all [release: bool = false] {
let crates = [
"vapora-shared",
"vapora-agents",
"vapora-llm-router",
"vapora-backend",
"vapora-frontend",
"vapora-mcp-server"
]
$crates | reduce -f [] {|crate, results|
$results | append (build-crate $crate $release)
}
}
# Check if all builds succeeded
def check-build-results [results: list] {
let failures = ($results | where {|r| not $r.success })
if (($failures | length) > 0) {
print ""
print "=== Build Failures ==="
for failure in $failures {
print $"✗ ($failure.crate): ($failure.error)"
}
false
} else {
true
}
}
# Main build function
def main [
--release # Build in release mode
--crate: string # Build specific crate
] {
print "=== VAPORA Build ==="
print ""
let build_mode = if $release { "release" } else { "debug" }
print $"Build mode: [($build_mode)]"
print ""
let results = if ($crate == null or $crate == "") {
build-all $release
} else {
[
(build-crate $crate $release)
]
}
# Check results
print ""
let success = (check-build-results $results)
if $success {
print ""
print "=== Build Complete ==="
let success_count = ($results | length)
print $"✓ ($success_count) crate(s) built successfully"
} else {
print ""
print "Build failed"
exit 1
}
}