Skip to content

Commit bdb97d8

Browse files
committed
schema: allow alumni to have roles
This enables the compiler team to recognise their alumni for the role that they held while active.
1 parent 1ba3fa5 commit bdb97d8

File tree

3 files changed

+19
-13
lines changed

3 files changed

+19
-13
lines changed

src/schema.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -308,18 +308,14 @@ impl Team {
308308
let alumni = data
309309
.teams()
310310
.chain(data.archived_teams())
311-
.flat_map(|t| t.alumni())
312-
.map(|a| a.as_str())
311+
.flat_map(|t| t.explicit_alumni())
312+
.map(|a| a.github.as_str())
313313
.filter(|person| !active_members.contains(person));
314314
members.extend(alumni);
315315
}
316316
Ok(members)
317317
}
318318

319-
pub(crate) fn alumni(&self) -> &[String] {
320-
self.people.alumni.as_ref().map_or(&[], Vec::as_slice)
321-
}
322-
323319
pub(crate) fn raw_lists(&self) -> &[TeamList] {
324320
&self.lists
325321
}
@@ -478,6 +474,10 @@ impl Team {
478474
&self.people.members
479475
}
480476

477+
pub(crate) fn explicit_alumni(&self) -> &[TeamMember] {
478+
self.people.alumni.as_ref().map_or(&[], Vec::as_slice)
479+
}
480+
481481
pub(crate) fn contains_person(&self, data: &Data, person: &Person) -> Result<bool, Error> {
482482
let members = self.members(data)?;
483483
Ok(members.contains(person.github()))
@@ -525,7 +525,7 @@ impl std::cmp::Ord for GitHubTeam<'_> {
525525
pub(crate) struct TeamPeople {
526526
pub leads: Vec<String>,
527527
pub members: Vec<TeamMember>,
528-
pub alumni: Option<Vec<String>>,
528+
pub alumni: Option<Vec<TeamMember>>,
529529
#[serde(default)]
530530
pub included_teams: Vec<String>,
531531
#[serde(default = "default_false")]

src/static_api.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@ impl<'a> Generator<'a> {
138138
for member in team.explicit_members().iter().cloned() {
139139
website_roles.insert(member.github, member.roles);
140140
}
141+
for alum in team.explicit_alumni().iter().cloned() {
142+
website_roles.insert(alum.github, alum.roles);
143+
}
141144

142145
let leads = team.leads();
143146
let mut members = Vec::new();
@@ -156,14 +159,17 @@ impl<'a> Generator<'a> {
156159
members.sort_by_key(|member| !member.is_lead);
157160

158161
let mut alumni = Vec::new();
159-
for github_name in team.alumni() {
160-
if let Some(person) = self.data.person(github_name) {
162+
for alum in team.explicit_alumni() {
163+
if let Some(person) = self.data.person(&alum.github) {
161164
alumni.push(v1::TeamMember {
162165
name: person.name().into(),
163-
github: github_name.to_string(),
166+
github: alum.github.to_string(),
164167
github_id: person.github_id(),
165168
is_lead: false,
166-
roles: Vec::new(),
169+
roles: website_roles
170+
.get(alum.github.as_str())
171+
.cloned()
172+
.unwrap_or_default(),
167173
});
168174
}
169175
}

src/validate.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,8 +302,8 @@ fn validate_inactive_members(data: &Data, errors: &mut Vec<String>) {
302302
for member in members {
303303
referenced_members.insert(member);
304304
}
305-
for person in team.alumni() {
306-
referenced_members.insert(person);
305+
for person in team.explicit_alumni() {
306+
referenced_members.insert(person.github.as_str());
307307
}
308308
for list in team.raw_lists() {
309309
for person in &list.extra_people {

0 commit comments

Comments
 (0)