gitkit_cli/git/
contributions.rs1use git2::DiffStats;
2
3use super::kit::KitRepo;
4
5#[derive(Debug, Default)]
6pub struct Contribution {
7 pub commits: usize,
8 pub insertions: usize,
9 pub deletions: usize,
10}
11
12impl Contribution {
13 pub fn add_stats(&mut self, stats: DiffStats) {
14 self.commits += 1;
15 self.insertions += stats.insertions();
16 self.deletions += stats.deletions();
17 }
18}
19
20impl KitRepo {
21 pub fn get_entire_repo_contribution(&self) -> Result<Contribution, git2::Error> {
22 let mut contrib = Contribution::default();
23 for commit in self.iter_raw_commits()? {
24 let diff = self.get_parent_diff(&commit, None)?; let stats = diff.stats()?;
26
27 contrib.add_stats(stats);
28 }
29 Ok(contrib)
30 }
31
32 pub fn get_lifetime_contributions(&self, email: String) -> Result<Contribution, git2::Error> {
33 let mut contrib = Contribution::default();
34 for commit in self.get_raw_author_commits(&email)? {
35 let diff = self.get_parent_diff(&commit, None)?; let stats = diff.stats()?;
37 contrib.add_stats(stats);
38 }
39
40 Ok(contrib)
41 }
42}