diff --git a/locales/en-US/governance.ftl b/locales/en-US/governance.ftl index 662178144..d8f8d0c3e 100644 --- a/locales/en-US/governance.ftl +++ b/locales/en-US/governance.ftl @@ -11,6 +11,8 @@ governance-rfc-blurb = Each major decision in Rust starts as a Request for Comme governance-teams-header = Teams governance-wgs-header = Working Groups +governance-rust-project-link = Show all Rust team members + governance-archived-teams-header = Archived teams governance-archived-teams-description = Some past teams are no longer active. We call these "archived teams". governance-archived-teams-link = Show archived teams @@ -31,3 +33,8 @@ governance-user-team-leader = Team leader governance-members-header = Members governance-alumni-header = Alumni governance-alumni-thanks = We also want to thank all past members for their invaluable contributions! + +## governance/all-team-members.mbs +governance-all-team-members-title = All Rust team members +governance-all-team-members-intro = This section lists the members of currently active Rust teams. +governance-all-team-members-alumni-intro = This section lists our team alumni. diff --git a/src/render.rs b/src/render.rs index cc351acfe..8c112bd22 100644 --- a/src/render.rs +++ b/src/render.rs @@ -219,6 +219,18 @@ pub fn render_governance(render_ctx: &RenderCtx) -> anyhow::Result<()> { .render(dst_path) })?; + let all_team_members_data = render_ctx.teams.all_team_members(); + for_all_langs("governance/all-team-members.html", |dst_path, lang| { + render_ctx + .page( + "governance/all-team-members", + "governance-all-team-members-title", + &all_team_members_data, + lang, + ) + .render(dst_path) + })?; + Ok(()) } diff --git a/src/teams.rs b/src/teams.rs index 95721186a..8b2803c0b 100644 --- a/src/teams.rs +++ b/src/teams.rs @@ -3,7 +3,7 @@ use handlebars::{ Context, Handlebars, Helper, HelperResult, Output, RenderContext, RenderErrorReason, }; use percent_encoding::{AsciiSet, NON_ALPHANUMERIC, utf8_percent_encode}; -use rust_team_data::v1::{BASE_URL, Team, TeamKind, Teams}; +use rust_team_data::v1::{BASE_URL, Team, TeamKind, TeamMember, Teams}; use serde::Serialize; use std::cmp::Reverse; use std::collections::HashMap; @@ -204,6 +204,36 @@ impl RustTeams { ArchivedTeams { teams } } + + pub fn all_team_members(&self) -> AllTeamMembers { + let mut alumni = HashMap::new(); + let mut active = HashMap::new(); + for team in &self.archived_teams { + alumni.extend(team.members.iter().map(|m| (m.github_id, m))); + alumni.extend(team.alumni.iter().map(|m| (m.github_id, m))); + } + for team in &self.teams { + if team.name != "alumni" { + alumni.extend(team.alumni.iter().map(|m| (m.github_id, m))); + active.extend(team.members.iter().map(|m| (m.github_id, m))); + } + } + + alumni.retain(|id, _| !active.contains_key(id)); + + let alumni = { + let mut alumni = alumni.into_values().cloned().collect::>(); + alumni.sort_by_key(|m| m.name.clone()); + alumni + }; + let active = { + let mut active = active.into_values().cloned().collect::>(); + active.sort_by_key(|m| m.name.clone()); + active + }; + + AllTeamMembers { active, alumni } + } } #[derive(Serialize)] @@ -236,6 +266,12 @@ pub struct ArchivedTeams { teams: Vec, } +#[derive(Serialize)] +pub struct AllTeamMembers { + active: Vec, + alumni: Vec, +} + pub fn load_rust_teams() -> anyhow::Result { println!("Downloading Team API data"); diff --git a/templates/governance/all-team-members.html.hbs b/templates/governance/all-team-members.html.hbs new file mode 100644 index 000000000..40356e587 --- /dev/null +++ b/templates/governance/all-team-members.html.hbs @@ -0,0 +1,47 @@ +{{#*inline "member"}} +
+ + {{member.name}} + +
+ {{member.name}} +
+ GitHub: {{member.github}} +
+
+
+{{/inline}} + +{{#*inline "page"}} +
+
+

{{fluent "governance-all-team-members-intro"}}

+
+
+ +
+
+ {{#each data.active as |member|}} + {{> member member=member }} + {{/each}} +
+
+ +
+
+

{{fluent "governance-all-team-members-alumni-intro"}}

+
+
+ +
+
+ {{#each data.alumni as |member|}} + {{> member member=member }} + {{/each}} +
+
+ +{{/inline}} +{{~> (lookup this "parent")~}} diff --git a/templates/governance/index.html.hbs b/templates/governance/index.html.hbs index 43552f163..d32c0c58d 100644 --- a/templates/governance/index.html.hbs +++ b/templates/governance/index.html.hbs @@ -34,6 +34,11 @@ {{> governance/index-team team=team baseurl=../baseurl}} {{/each~}} +