use bitrouter_config::{BitrouterConfig, RoutingStrategy};
pub fn run_list(config: &BitrouterConfig) -> Result<(), Box<dyn std::error::Error>> {
if config.models.is_empty() {
let mut any = false;
for (provider_name, provider) in &config.providers {
if let Some(models) = &provider.models {
for model_id in models.keys() {
println!(" {model_id} [{provider_name}]");
any = true;
}
}
}
if !any {
println!(" (no models configured)");
}
return Ok(());
}
let mut entries: Vec<_> = config.models.iter().collect();
entries.sort_by_key(|(name, _)| (*name).clone());
for (model_name, model_config) in entries {
let providers: Vec<&str> = model_config
.endpoints
.iter()
.map(|ep| ep.provider.as_str())
.collect();
let strategy = match model_config.strategy {
RoutingStrategy::Priority => "priority",
RoutingStrategy::LoadBalance => "load_balance",
};
println!(" {model_name} [{}] {strategy}", providers.join(","));
}
Ok(())
}