analyze_org/
analyze_org.rs1use anyhow::Result;
11use chrono::Utc;
12use organizational_intelligence_plugin::github::GitHubMiner;
13use organizational_intelligence_plugin::report::{
14 AnalysisMetadata, AnalysisReport, ReportGenerator,
15};
16use std::path::PathBuf;
17
18#[tokio::main]
19async fn main() -> Result<()> {
20 tracing_subscriber::fmt::fmt()
22 .with_max_level(tracing::Level::INFO)
23 .init();
24
25 println!("š Organizational Intelligence Plugin - Example");
26 println!(" Analyzing organization: tokio-rs\n");
27
28 let miner = GitHubMiner::new(None);
30
31 println!("š„ Fetching repositories...");
33 let repos = miner.fetch_organization_repos("tokio-rs").await?;
34
35 println!("ā
Found {} repositories\n", repos.len());
36
37 let mut sorted_repos = repos.clone();
39 sorted_repos.sort_by(|a, b| b.stars.cmp(&a.stars));
40
41 println!("ā Top repositories:");
42 for (i, repo) in sorted_repos.iter().take(3).enumerate() {
43 println!(
44 " {}. {} ({} ā) - {}",
45 i + 1,
46 repo.name,
47 repo.stars,
48 repo.language.as_deref().unwrap_or("Unknown")
49 );
50 }
51
52 println!("\nš Generating YAML report...");
54 let report_generator = ReportGenerator::new();
55
56 let metadata = AnalysisMetadata {
57 organization: "tokio-rs".to_string(),
58 analysis_date: Utc::now().to_rfc3339(),
59 repositories_analyzed: repos.len(),
60 commits_analyzed: 0, analyzer_version: env!("CARGO_PKG_VERSION").to_string(),
62 };
63
64 let report = AnalysisReport {
65 version: "1.0".to_string(),
66 metadata,
67 defect_patterns: vec![], };
69
70 let output_path = PathBuf::from("tokio-rs-analysis.yaml");
72 report_generator
73 .write_to_file(&report, &output_path)
74 .await?;
75
76 println!("ā
Report saved to: {}", output_path.display());
77
78 let yaml_content = tokio::fs::read_to_string(&output_path).await?;
80 println!("\nš Report preview:");
81 println!("---");
82 for (i, line) in yaml_content.lines().take(15).enumerate() {
83 println!("{}", line);
84 if i == 14 && yaml_content.lines().count() > 15 {
85 println!(" ... (truncated)");
86 }
87 }
88 println!("---");
89
90 println!("\nšÆ Example complete!");
91 println!(" Phase 1 MVP features demonstrated:");
92 println!(" ā
GitHub API integration");
93 println!(" ā
Repository fetching");
94 println!(" ā
YAML report generation");
95
96 Ok(())
97}