diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2019-05-22 17:58:06 -0700 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2019-05-22 17:58:25 -0700 |
commit | f92d0c6eb55ca415cbfa215330fcfd33c8b23378 (patch) | |
tree | d641e5640711e9ac06671c5221e7b02bde776f12 /src | |
parent | 3e9683a0c16378f4131de748dac22d94a4b779fa (diff) |
Enforce all teams have alphanumeric names
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 2 | ||||
-rw-r--r-- | src/validate.rs | 25 |
2 files changed, 26 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index 5f181ed..9411011 100644 --- a/src/main.rs +++ b/src/main.rs @@ -81,7 +81,7 @@ fn run() -> Result<(), Error> { println!("# Autogenerated by `cargo run website-data` in https://github.com/rust-lang/team"); for team in data.teams() { if let Some(ref website) = team.website_data() { - let name = team.name().replace('.', ""); + let name = team.name(); println!("governance-{}-name = {}", name, website.name()); println!("governance-{}-description = {}\n", name, website.description()); } diff --git a/src/validate.rs b/src/validate.rs index 8c33570..478515a 100644 --- a/src/validate.rs +++ b/src/validate.rs @@ -20,6 +20,7 @@ static CHECKS: &[fn(&Data, &mut Vec<String>)] = &[ validate_permissions, validate_rfcbot_labels, validate_rfcbot_exclude_members, + validate_team_names, ]; pub(crate) fn validate(data: &Data) -> Result<(), Error> { @@ -327,6 +328,30 @@ fn validate_rfcbot_exclude_members(data: &Data, errors: &mut Vec<String>) { }); } +/// Ensure team names are alphanumeric + `-` +fn validate_team_names(data: &Data, errors: &mut Vec<String>) { + wrapper(data.teams(), errors, |team, _| { + if !team.name().chars().all(|c| c.is_alphanumeric() || c == '-') { + bail!( + "team name `{}` can only be alphanumeric with dashes", + team.name() + ); + } + match (team.is_wg() == team.name().starts_with("wg-"), team.is_wg()) { + (false, true) => bail!( + "working group `{}`'s name doesn't start with wg-", + team.name() + ), + (false, false) => bail!( + "team `{}` seems like a working group but has `wg = false`", + team.name() + ), + (true, _) => {} + } + Ok(()) + }); +} + fn wrapper<T, I, F>(iter: I, errors: &mut Vec<String>, mut func: F) where I: Iterator<Item = T>, |