136 lines
4.7 KiB
Plaintext
Executable File
136 lines
4.7 KiB
Plaintext
Executable File
#!/usr/bin/env nu
|
|
|
|
# Platform Configuration Validation Script
|
|
# Validates all platform service configuration files
|
|
|
|
def check-config [path: string] {
|
|
if ($path | path exists) {
|
|
try {
|
|
open $path | ignore
|
|
true
|
|
} catch {
|
|
false
|
|
}
|
|
} else {
|
|
false
|
|
}
|
|
}
|
|
|
|
def main [] {
|
|
print "🔍 Validating Platform Service Configurations...\n"
|
|
|
|
let services = [
|
|
{ name: "Orchestrator", path: "orchestrator", configs: ["config.defaults.toml", "config.schema.toml"], backup: null }
|
|
{ name: "Control Center", path: "control-center", configs: ["config.defaults.toml", "config.schema.toml"], backup: "config.toml.backup" }
|
|
{ name: "MCP Server", path: "mcp-server", configs: ["config.defaults.toml", "config.schema.toml"], backup: null }
|
|
]
|
|
|
|
let config_checks = $services | each { |service|
|
|
print $"📦 Checking ($service.name)..."
|
|
|
|
let base_path = $"($env.PWD)/($service.path)"
|
|
|
|
let config_results = $service.configs | each { |config|
|
|
let config_path = $"($base_path)/($config)"
|
|
let exists = ($config_path | path exists)
|
|
let valid = (check-config $config_path)
|
|
|
|
if $exists {
|
|
if $valid {
|
|
print $" ✅ ($config) exists and is valid TOML"
|
|
} else {
|
|
print $" ❌ ($config) has invalid TOML syntax"
|
|
}
|
|
} else {
|
|
print $" ❌ ($config) NOT FOUND"
|
|
}
|
|
|
|
{config: $config, exists: $exists, valid: $valid}
|
|
}
|
|
|
|
let backup_ok = if $service.backup != null {
|
|
let backup_path = $"($base_path)/($service.backup)"
|
|
if ($backup_path | path exists) {
|
|
print $" ✅ Backup ($service.backup) exists"
|
|
true
|
|
} else {
|
|
print $" ❌ Backup ($service.backup) NOT FOUND"
|
|
false
|
|
}
|
|
} else {
|
|
true
|
|
}
|
|
|
|
print ""
|
|
|
|
let all_configs_ok = ($config_results | all { |x| $x.exists and $x.valid })
|
|
{service: $service.name, configs_ok: $all_configs_ok, backup_ok: $backup_ok, valid: ($all_configs_ok and $backup_ok)}
|
|
}
|
|
|
|
# Check orchestrator Rust integration
|
|
print "🔧 Checking Orchestrator Rust Integration..."
|
|
|
|
let config_rs_path = "orchestrator/src/config.rs"
|
|
let config_rs_exists = ($config_rs_path | path exists)
|
|
|
|
if $config_rs_exists {
|
|
let lines = (open $config_rs_path | lines | length)
|
|
print $" ✅ src/config.rs exists \(($lines) lines\)"
|
|
} else {
|
|
print $" ❌ src/config.rs NOT FOUND"
|
|
}
|
|
|
|
let cargo_toml_path = "orchestrator/Cargo.toml"
|
|
let has_toml_dep = (open --raw $cargo_toml_path | str contains "toml = {")
|
|
|
|
if $has_toml_dep {
|
|
print " ✅ toml dependency added to Cargo.toml"
|
|
} else {
|
|
print " ❌ toml dependency NOT in Cargo.toml"
|
|
}
|
|
|
|
let lib_rs_path = "orchestrator/src/lib.rs"
|
|
let has_config_mod = (open --raw $lib_rs_path | str contains "pub mod config;")
|
|
|
|
if $has_config_mod {
|
|
print " ✅ config module exported in lib.rs"
|
|
} else {
|
|
print " ❌ config module NOT exported in lib.rs"
|
|
}
|
|
|
|
print ""
|
|
|
|
let all_services_ok = ($config_checks | all { |x| $x.valid })
|
|
let rust_integration_ok = ($config_rs_exists and $has_toml_dep and $has_config_mod)
|
|
let all_valid = ($all_services_ok and $rust_integration_ok)
|
|
|
|
# Final result
|
|
if $all_valid {
|
|
print "✨ All platform configurations are valid!"
|
|
print ""
|
|
print "📋 Summary:"
|
|
print " - 3 services configured (Orchestrator, Control Center, MCP Server)"
|
|
print " - 6 config files created (2 per service)"
|
|
print " - 1 backup created (control-center/config.toml.backup)"
|
|
print " - Rust config module integrated (orchestrator/src/config.rs)"
|
|
print ""
|
|
print "🚀 Next Steps:"
|
|
print " 1. Update orchestrator/src/main.rs to use OrchestratorConfig::load()"
|
|
print " 2. Test config loading with: cd orchestrator && cargo test config::"
|
|
print " 3. Create config.user.toml.example files for user overrides"
|
|
} else {
|
|
print "❌ Configuration validation failed!"
|
|
print " Review errors above and fix missing/invalid files."
|
|
print ""
|
|
print "Failed checks:"
|
|
for check in $config_checks {
|
|
if not $check.valid {
|
|
print $" - ($check.service): configs_ok=($check.configs_ok), backup_ok=($check.backup_ok)"
|
|
}
|
|
}
|
|
if not $rust_integration_ok {
|
|
print $" - Rust integration: config.rs=($config_rs_exists), toml_dep=($has_toml_dep), module_export=($has_config_mod)"
|
|
}
|
|
}
|
|
}
|