Skip to content

Commit 087fde7

Browse files
davidtwcoMark-Simulacrum
authored andcommitted
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 01a5789 commit 087fde7

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
@@ -147,6 +147,9 @@ impl<'a> Generator<'a> {
147147
for member in team.explicit_members().iter().cloned() {
148148
website_roles.insert(member.github, member.roles);
149149
}
150+
for alum in team.explicit_alumni().iter().cloned() {
151+
website_roles.insert(alum.github, alum.roles);
152+
}
150153

151154
let leads = team.leads();
152155
let mut members = Vec::new();
@@ -165,14 +168,17 @@ impl<'a> Generator<'a> {
165168
members.sort_by_key(|member| !member.is_lead);
166169

167170
let mut alumni = Vec::new();
168-
for github_name in team.alumni() {
169-
if let Some(person) = self.data.person(github_name) {
171+
for alum in team.explicit_alumni() {
172+
if let Some(person) = self.data.person(&alum.github) {
170173
alumni.push(v1::TeamMember {
171174
name: person.name().into(),
172-
github: github_name.to_string(),
175+
github: alum.github.to_string(),
173176
github_id: person.github_id(),
174177
is_lead: false,
175-
roles: Vec::new(),
178+
roles: website_roles
179+
.get(alum.github.as_str())
180+
.cloned()
181+
.unwrap_or_default(),
176182
});
177183
}
178184
}

src/validate.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,8 +304,8 @@ fn validate_inactive_members(data: &Data, errors: &mut Vec<String>) {
304304
for member in members {
305305
referenced_members.insert(member);
306306
}
307-
for person in team.alumni() {
308-
referenced_members.insert(person);
307+
for person in team.explicit_alumni() {
308+
referenced_members.insert(person.github.as_str());
309309
}
310310
for list in team.raw_lists() {
311311
for person in &list.extra_people {

0 commit comments

Comments
 (0)