summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2019-05-22 17:58:06 -0700
committerManish Goregaokar <manishsmail@gmail.com>2019-05-22 17:58:25 -0700
commitf92d0c6eb55ca415cbfa215330fcfd33c8b23378 (patch)
treed641e5640711e9ac06671c5221e7b02bde776f12 /src
parent3e9683a0c16378f4131de748dac22d94a4b779fa (diff)
Enforce all teams have alphanumeric names
Diffstat (limited to 'src')
-rw-r--r--src/main.rs2
-rw-r--r--src/validate.rs25
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>,