Add version --all command
This commit is contained in:
parent
ee8f17b800
commit
91f6263746
1 changed files with 72 additions and 1 deletions
|
|
@ -5,6 +5,8 @@ use std::collections::HashMap;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
|
||||||
|
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||||
|
|
||||||
pub async fn run() -> Result<()> {
|
pub async fn run() -> Result<()> {
|
||||||
let args: Vec<String> = env::args().collect();
|
let args: Vec<String> = env::args().collect();
|
||||||
if args.len() < 2 {
|
if args.len() < 2 {
|
||||||
|
|
@ -163,6 +165,10 @@ pub async fn run() -> Result<()> {
|
||||||
println!("x Component '{}' is not installed", component);
|
println!("x Component '{}' is not installed", component);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
"version" => {
|
||||||
|
let show_all = args.contains(&"--all".to_string());
|
||||||
|
print_version(show_all).await?;
|
||||||
|
}
|
||||||
"vault" => {
|
"vault" => {
|
||||||
if args.len() < 3 {
|
if args.len() < 3 {
|
||||||
print_vault_usage();
|
print_vault_usage();
|
||||||
|
|
@ -204,6 +210,9 @@ pub async fn run() -> Result<()> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
"--version" | "-v" => {
|
||||||
|
print_version(false).await?;
|
||||||
|
}
|
||||||
"--help" | "-h" => {
|
"--help" | "-h" => {
|
||||||
print_usage();
|
print_usage();
|
||||||
}
|
}
|
||||||
|
|
@ -216,7 +225,7 @@ pub async fn run() -> Result<()> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_usage() {
|
fn print_usage() {
|
||||||
println!("BotServer CLI");
|
println!("BotServer CLI v{}", VERSION);
|
||||||
println!();
|
println!();
|
||||||
println!("Usage: botserver <command> [options]");
|
println!("Usage: botserver <command> [options]");
|
||||||
println!();
|
println!();
|
||||||
|
|
@ -229,6 +238,8 @@ fn print_usage() {
|
||||||
println!(" stop Stop all components");
|
println!(" stop Stop all components");
|
||||||
println!(" restart Restart all components");
|
println!(" restart Restart all components");
|
||||||
println!(" vault <subcommand> Manage Vault secrets");
|
println!(" vault <subcommand> Manage Vault secrets");
|
||||||
|
println!(" version [--all] Show version information");
|
||||||
|
println!(" --version, -v Show version");
|
||||||
println!(" --help, -h Show this help");
|
println!(" --help, -h Show this help");
|
||||||
println!();
|
println!();
|
||||||
println!("Options:");
|
println!("Options:");
|
||||||
|
|
@ -549,6 +560,66 @@ async fn vault_list() -> Result<()> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn print_version(show_all: bool) -> Result<()> {
|
||||||
|
println!("botserver {}", VERSION);
|
||||||
|
|
||||||
|
if show_all {
|
||||||
|
println!();
|
||||||
|
println!("Build Information:");
|
||||||
|
println!(" rustc: {}", rustc_version());
|
||||||
|
println!(" target: {}", std::env::consts::ARCH);
|
||||||
|
println!(" os: {}", std::env::consts::OS);
|
||||||
|
println!();
|
||||||
|
|
||||||
|
// Check installed components
|
||||||
|
let mode = InstallMode::Local;
|
||||||
|
if let Ok(pm) = PackageManager::new(mode, None) {
|
||||||
|
println!("Installed Components:");
|
||||||
|
let components = pm.list();
|
||||||
|
let mut installed_count = 0;
|
||||||
|
for component in &components {
|
||||||
|
if pm.is_installed(component) {
|
||||||
|
println!(" * {} (installed)", component);
|
||||||
|
installed_count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if installed_count == 0 {
|
||||||
|
println!(" (none)");
|
||||||
|
}
|
||||||
|
println!();
|
||||||
|
println!("Available Components: {}", components.len());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check Vault status
|
||||||
|
println!();
|
||||||
|
println!("Secrets:");
|
||||||
|
if let Ok(manager) = SecretsManager::from_env() {
|
||||||
|
if manager.is_enabled() {
|
||||||
|
match manager.health_check().await {
|
||||||
|
Ok(true) => println!(" Vault: connected"),
|
||||||
|
_ => println!(" Vault: not reachable"),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
println!(" Vault: not configured");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
println!(" Vault: not configured");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn rustc_version() -> String {
|
||||||
|
Command::new("rustc")
|
||||||
|
.arg("--version")
|
||||||
|
.output()
|
||||||
|
.ok()
|
||||||
|
.and_then(|o| String::from_utf8(o.stdout).ok())
|
||||||
|
.map(|s| s.trim().to_string())
|
||||||
|
.unwrap_or_else(|| "unknown".to_string())
|
||||||
|
}
|
||||||
|
|
||||||
async fn vault_health() -> Result<()> {
|
async fn vault_health() -> Result<()> {
|
||||||
let manager = SecretsManager::from_env()?;
|
let manager = SecretsManager::from_env()?;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue