use crate::config::{config_path, find_vyctor_root, load_config};
use anyhow::Result;
use colored::Colorize;
use std::process::Command;
pub async fn run(edit: bool) -> Result<()> {
let _root = find_vyctor_root()?;
let path = config_path()?;
if edit {
let editor = std::env::var("EDITOR").unwrap_or_else(|_| {
if cfg!(target_os = "macos") {
"open".to_string()
} else if cfg!(target_os = "windows") {
"notepad".to_string()
} else {
"nano".to_string()
}
});
println!("{} Opening config in {}", "→".cyan(), editor);
Command::new(&editor).arg(&path).status()?;
} else {
let config = load_config()?;
println!("{}", "Current Configuration:".bold());
println!();
println!("{}", "[indexing]".cyan());
println!("include = [");
for pattern in &config.indexing.include {
println!(" \"{}\",", pattern);
}
println!("]");
println!("exclude = [");
for pattern in &config.indexing.exclude {
println!(" \"{}\",", pattern);
}
println!("]");
println!("chunk_size = {}", config.indexing.chunk_size);
println!("chunk_overlap = {}", config.indexing.chunk_overlap);
println!();
println!("{}", "[embedding]".cyan());
println!("provider = \"{:?}\"", config.embedding.provider);
println!("dimensions = {}", config.embedding.dimensions);
println!("batch_size = {}", config.embedding.batch_size);
println!();
match config.embedding.provider {
crate::config::EmbeddingProvider::OpenAI => {
println!("{}", "[embedding.openai]".cyan());
println!("model = \"{}\"", config.embedding.openai.model);
println!("api_key_env = \"{}\"", config.embedding.openai.api_key_env);
println!("base_url = \"{}\"", config.embedding.openai.base_url);
}
crate::config::EmbeddingProvider::Voyage => {
println!("{}", "[embedding.voyage]".cyan());
println!("model = \"{}\"", config.embedding.voyage.model);
println!("api_key_env = \"{}\"", config.embedding.voyage.api_key_env);
println!("base_url = \"{}\"", config.embedding.voyage.base_url);
}
crate::config::EmbeddingProvider::Local => {
println!("{}", "[embedding.local]".cyan());
println!("model = \"{}\"", config.embedding.local.model);
println!("cache_dir = \"{}\"", config.embedding.local.cache_dir);
}
}
println!();
println!("{}", "─".repeat(50).dimmed());
println!("Config file: {}", path.display().to_string().dimmed());
println!("Run '{}' to edit", "vyctor config --edit".cyan());
}
Ok(())
}