From a4207bde1b94ff36ce1074ce5ea42148d12cd728 Mon Sep 17 00:00:00 2001 From: Jacob Pratt Date: Sat, 9 Sep 2023 01:21:42 -0400 Subject: [PATCH] Add support for removing users' names upon request --- src/main.rs | 1 + src/removed.rs | 35 +++++++++++++++++++++++++++++++++++ src/site.rs | 7 ++++++- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/removed.rs diff --git a/src/main.rs b/src/main.rs index 87db9ff9..af14e8fc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,6 +14,7 @@ use reviewers::Reviewers; mod config; mod error; +mod removed; mod reviewers; mod site; diff --git a/src/removed.rs b/src/removed.rs new file mode 100644 index 00000000..0c4da011 --- /dev/null +++ b/src/removed.rs @@ -0,0 +1,35 @@ +use std::collections::HashSet; +use std::iter::FromIterator; + +use mailmap::Author; + +lazy_static::lazy_static! { + static ref REMOVED: HashSet = HashSet::from_iter([ + Author { + name: "Jonas Schievink".to_string(), + email: "jonasschievink@gmail.com".to_string() + }, + Author { + name: "Jonas Schievink".to_string(), + email: "jonas.schievink@ferrous-systems.com".to_string() + }, + Author { + name: "Jonas Schievink".to_string(), + email: "jonas@schievink.net".to_string() + }, + Author { + name: "Jonas Schievink".to_string(), + email: "Jonas.Schievink@sony.com".to_string() + } + ]); +} + +pub(crate) trait Removed { + fn is_removed(&self) -> bool; +} + +impl Removed for Author { + fn is_removed(&self) -> bool { + REMOVED.contains(self) + } +} diff --git a/src/site.rs b/src/site.rs index 47649d34..b573f62e 100644 --- a/src/site.rs +++ b/src/site.rs @@ -1,3 +1,4 @@ +use crate::removed::Removed; use crate::{AuthorMap, VersionTag}; use handlebars::Handlebars; use std::collections::BTreeMap; @@ -146,7 +147,11 @@ fn author_map_to_scores(map: &AuthorMap) -> Vec { .iter() .map(|(author, commits)| Entry { rank: 0, - author: author.name.clone(), + author: if author.is_removed() { + "[removed]".to_string() + } else { + author.name.clone() + }, commits: commits, }) .collect::>();