use summer_lsp::analysis::toml::{ConfigValue, TomlAnalyzer};
use summer_lsp::schema::SchemaProvider;
fn main() {
let content = std::fs::read_to_string("test_nested_config.toml").expect("无法读取测试配置文件");
let schema_provider = SchemaProvider::new();
let analyzer = TomlAnalyzer::new(schema_provider);
match analyzer.parse(&content) {
Ok(doc) => {
println!("✅ 配置文件解析成功!\n");
println!("📋 配置段数量: {}", doc.config_sections.len());
for (prefix, section) in &doc.config_sections {
println!("\n[{}]", prefix);
println!(" 属性数量: {}", section.properties.len());
for (key, property) in §ion.properties {
println!(" - {}: {:?}", key, property.value);
}
}
println!("\n🔧 环境变量数量: {}", doc.env_vars.len());
for env_var in &doc.env_vars {
println!(" - ${{{}}}", env_var.name);
if let Some(default) = &env_var.default {
println!(" 默认值: {}", default);
}
}
println!("\n✨ 嵌套配置验证:");
if let Some(web_section) = doc.config_sections.get("web") {
println!(" ✓ web 配置段存在");
if web_section.properties.contains_key("middlewares") {
println!(" ✓ web.middlewares 嵌套配置存在");
}
if web_section.properties.contains_key("host") {
println!(" ✓ web.host 顶层属性存在");
}
}
if let Some(opendal_section) = doc.config_sections.get("opendal") {
println!(" ✓ opendal 配置段存在");
if let Some(options_prop) = opendal_section.properties.get("options") {
println!(" ✓ opendal.options 内联表存在");
if let ConfigValue::Table(table) = &options_prop.value {
println!(" - 包含 {} 个属性", table.len());
for key in table.keys() {
println!(" • {}", key);
}
}
}
}
if let Some(db_section) = doc.config_sections.get("database") {
println!(" ✓ database 配置段存在");
if db_section.properties.contains_key("pool") {
println!(" ✓ database.pool 嵌套配置存在");
}
if db_section.properties.contains_key("migrations") {
println!(" ✓ database.migrations 嵌套配置存在");
}
}
}
Err(e) => {
eprintln!("❌ 配置文件解析失败: {}", e);
std::process::exit(1);
}
}
}