Skip to content
Open
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
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ So stay vigilant and update it if you notice something missing.
- https://www.rust-lang.org/governance/teams/crates-io
- https://www.rust-lang.org/governance/teams
- https://www.rust-lang.org/governance/wgs
- https://www.rust-lang.org/governance/wgs/wg-secure-code
<!-- a couple localized redirects -->
- https://www.rust-lang.org/es-ES
- https://www.rust-lang.org/es-ES/contribute-compiler.html
Expand Down
9 changes: 7 additions & 2 deletions src/render.rs
Original file line number Diff line number Diff line change
Expand Up @@ -194,8 +194,13 @@ pub fn render_governance(
.render(dst_path)
})?;

// Individual teams
for team in data.teams {
// Individual teams, plus legacy launching-pad subteams that have dedicated pages
// for backwards compatibility (e.g. /governance/wgs/wg-secure-code).
let all_team_pages = data
.teams
.into_iter()
.chain(render_ctx.teams.launching_pad_subteam_pages());
for team in all_team_pages {
println!("Rendering team page for {}", team.team.name);
let data: PageData = render_ctx
.teams
Expand Down
22 changes: 22 additions & 0 deletions src/teams.rs
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,28 @@ impl RustTeamData {
})
}

/// Returns teams that are subteams of launching-pad and have their own dedicated page.
/// These are legacy working groups that were moved under launching-pad but still need
/// their own pages to avoid breaking external links (e.g. /governance/wgs/wg-secure-code).
pub fn launching_pad_subteam_pages(&self) -> Vec<IndexTeam> {
self.teams
.iter()
.filter(|team| team.website_data.is_some())
.filter(|team| team.subteam_of.as_deref() == Some("launching-pad"))
.filter(|team| team.kind == TeamKind::WorkingGroup)
.map(|team| {
let section = kind_to_str(team.kind);
let page_name = team.website_data.as_ref().unwrap().page.clone();
IndexTeam {
url: format!("{section}/{page_name}"),
section,
page_name,
team: team.clone(),
}
})
.collect()
}

pub fn all_teams(&self) -> AllTeams {
let mut active_teams = self
.teams
Expand Down
Loading