pub struct Config {
pub target_directory: PathBuf,
pub ignore_patterns: Vec<String>,
pub file_extensions: Vec<String>,
pub max_file_size: usize,
pub llm: LLMConfig,
pub analysis: AnalysisConfig,
}Fields§
§target_directory: PathBuf§ignore_patterns: Vec<String>§file_extensions: Vec<String>§max_file_size: usize§llm: LLMConfig§analysis: AnalysisConfigImplementations§
Source§impl Config
impl Config
Sourcepub fn default_config_path() -> Result<PathBuf>
pub fn default_config_path() -> Result<PathBuf>
Get the default config file path (~/.project-examer.toml)
Examples found in repository?
examples/config_example.rs (line 8)
3fn main() -> anyhow::Result<()> {
4 println!("Project Examer Configuration Example");
5 println!("====================================");
6
7 // Show default config path
8 match Config::default_config_path() {
9 Ok(path) => println!("📍 Default config location: {}", path.display()),
10 Err(e) => println!("❌ Error getting config path: {}", e),
11 }
12
13 // Load config (will use defaults if no file exists)
14 println!("\n🔧 Loading configuration...");
15 let config = Config::load()?;
16
17 println!("✅ Configuration loaded successfully!");
18 println!("📁 Target directory: {}", config.target_directory.display());
19 println!("🔍 File extensions: {:?}", config.file_extensions);
20 println!("🚫 Ignore patterns: {:?}", config.ignore_patterns);
21 println!("🤖 LLM Provider: {:?}", config.llm.provider);
22 println!("🧠 Model: {}", config.llm.model);
23
24 if config.llm.api_key.is_some() {
25 println!("🔑 API key: [CONFIGURED]");
26 } else {
27 println!("🔑 API key: [NOT SET - will check environment variables]");
28 }
29
30 Ok(())
31}Sourcepub fn load() -> Result<Self>
pub fn load() -> Result<Self>
Load config from file, falling back to defaults if file doesn’t exist
Examples found in repository?
examples/config_example.rs (line 15)
3fn main() -> anyhow::Result<()> {
4 println!("Project Examer Configuration Example");
5 println!("====================================");
6
7 // Show default config path
8 match Config::default_config_path() {
9 Ok(path) => println!("📍 Default config location: {}", path.display()),
10 Err(e) => println!("❌ Error getting config path: {}", e),
11 }
12
13 // Load config (will use defaults if no file exists)
14 println!("\n🔧 Loading configuration...");
15 let config = Config::load()?;
16
17 println!("✅ Configuration loaded successfully!");
18 println!("📁 Target directory: {}", config.target_directory.display());
19 println!("🔍 File extensions: {:?}", config.file_extensions);
20 println!("🚫 Ignore patterns: {:?}", config.ignore_patterns);
21 println!("🤖 LLM Provider: {:?}", config.llm.provider);
22 println!("🧠 Model: {}", config.llm.model);
23
24 if config.llm.api_key.is_some() {
25 println!("🔑 API key: [CONFIGURED]");
26 } else {
27 println!("🔑 API key: [NOT SET - will check environment variables]");
28 }
29
30 Ok(())
31}Sourcepub fn save_default(&self) -> Result<()>
pub fn save_default(&self) -> Result<()>
Save config to the default location
Sourcepub fn create_documented_config() -> String
pub fn create_documented_config() -> String
Create a config file with all available options documented
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Config
impl<'de> Deserialize<'de> for Config
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more