feat: use actual project data, real usage examples, dry-run/verbose flags, skip-unchanged optimization

- renderer: render_architecture_md accepts Config, uses project name and current date
- renderer: generate real Python usage examples from analyzed symbols
- writer: skip writing files when content unchanged (optimization)
- cli: add --dry-run flag to generate command (lists files without writing)
- cli: add verbose logging for file/module/symbol generation progress
This commit is contained in:
2026-02-15 03:32:10 +03:00
parent df52f80999
commit 25fdf400fa
7 changed files with 135 additions and 28 deletions

View File

@@ -70,17 +70,13 @@ impl DiffAwareWriter {
// Check if content has changed
let content_changed = existing_content != new_content;
// Write updated content
// Only write if content actually changed (optimization)
if content_changed {
let updated_content = self.update_timestamp(new_content)?;
fs::write(file_path, updated_content)
.map_err(ArchDocError::Io)?;
} else {
// Content hasn't changed, but we might still need to update timestamp
// TODO: Implement timestamp update logic based on config
fs::write(file_path, new_content)
.map_err(ArchDocError::Io)?;
}
// If not changed, skip writing entirely
}
Ok(())
@@ -118,17 +114,13 @@ impl DiffAwareWriter {
// Check if content has changed
let content_changed = existing_content != new_content;
// Write updated content
// Only write if content actually changed (optimization)
if content_changed {
let updated_content = self.update_timestamp(new_content)?;
fs::write(file_path, updated_content)
.map_err(ArchDocError::Io)?;
} else {
// Content hasn't changed, but we might still need to update timestamp
// TODO: Implement timestamp update logic based on config
fs::write(file_path, new_content)
.map_err(ArchDocError::Io)?;
}
// If not changed, skip writing entirely
} else {
eprintln!("Warning: No symbol marker found for {} in {}", symbol_id, file_path.display());
}