use std::fs;
pub struct SpruceConfig {
pub namespace: String,
pub project_name: String,
pub version: String,
}
pub fn read_spruce_config() -> Result<SpruceConfig, Box<dyn std::error::Error>> {
let cargo_content = fs::read_to_string("Cargo.toml")?;
let cargo_toml: toml::Value = cargo_content.parse()?;
let spruce = cargo_toml
.get("spruce")
.ok_or("No [spruce] section found in Cargo.toml. Please run 'spruce init' first.")?;
let namespace = spruce
.get("namespace")
.and_then(|n| n.as_str())
.ok_or("No namespace found in [spruce] section. Please run 'spruce init' first.")?
.to_string();
let project_name = cargo_toml["package"]["name"]
.as_str()
.ok_or("Could not find package name in Cargo.toml")?
.to_string();
let version = cargo_toml["package"]["version"]
.as_str()
.ok_or("Could not find version in Cargo.toml")?
.to_string();
Ok(SpruceConfig {
namespace,
project_name,
version,
})
}