Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions locales/en-US/governance.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.
12 changes: 12 additions & 0 deletions src/render.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(())
}

Expand Down
38 changes: 37 additions & 1 deletion src/teams.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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::<Vec<TeamMember>>();
alumni.sort_by_key(|m| m.name.clone());
alumni
};
let active = {
let mut active = active.into_values().cloned().collect::<Vec<TeamMember>>();
active.sort_by_key(|m| m.name.clone());
active
};

AllTeamMembers { active, alumni }
}
}

#[derive(Serialize)]
Expand Down Expand Up @@ -236,6 +266,12 @@ pub struct ArchivedTeams {
teams: Vec<Team>,
}

#[derive(Serialize)]
pub struct AllTeamMembers {
active: Vec<TeamMember>,
alumni: Vec<TeamMember>,
}

pub fn load_rust_teams() -> anyhow::Result<RustTeams> {
println!("Downloading Team API data");

Expand Down
47 changes: 47 additions & 0 deletions templates/governance/all-team-members.html.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{{#*inline "member"}}
<div class="w-100 w-25-l mb3 flex flex-row items-center">
<a class="mr4 w3 h3 flex-shrink-0" href="https://github.com/{{member.github}}">
<img class="w-100 h-100 bg-white br2"
src="https://avatars.githubusercontent.com/{{member.github}}"
alt="{{member.name}}">
</a>
<div>
{{member.name}}
<div class="f4">
GitHub: <a href="https://github.com/{{member.github}}">{{member.github}}</a>
</div>
</div>
</div>
{{/inline}}

{{#*inline "page"}}
<section class="green" style="padding-bottom: 10px;">
<div class="w-100 mw-none mw-8-m mw9-l center f2">
<p>{{fluent "governance-all-team-members-intro"}}</p>
</div>
</section>

<section class="green" style="padding-bottom: 15px;">
<div class="w-100 mw-none mw-8-m mw9-l flex flex-column flex-row-l flex-wrap-l center">
{{#each data.active as |member|}}
{{> member member=member }}
{{/each}}
</div>
</section>

<section class="red" style="padding-bottom: 10px;">
<div class="w-100 mw-none mw-8-m mw9-l center f2">
<p>{{fluent "governance-all-team-members-alumni-intro"}}</p>
</div>
</section>

<section class="red" style="padding-bottom: 15px;">
<div class="w-100 mw-none mw-8-m mw9-l flex flex-column flex-row-l flex-wrap-l center">
{{#each data.alumni as |member|}}
{{> member member=member }}
{{/each}}
</div>
</section>

{{/inline}}
{{~> (lookup this "parent")~}}
5 changes: 5 additions & 0 deletions templates/governance/index.html.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@
{{> governance/index-team team=team baseurl=../baseurl}}
{{/each~}}
</div>
<div class="flex">
<a href="{{baseurl}}/governance/all-team-members.html" class="center w-100 mw6 button button-secondary">
{{fluent "governance-rust-project-link"}}
</a>
</div>
</div>
</section>

Expand Down