diff options
Diffstat (limited to 'src/validate.rs')
-rw-r--r-- | src/validate.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/validate.rs b/src/validate.rs index 90881fe..21570d2 100644 --- a/src/validate.rs +++ b/src/validate.rs @@ -18,6 +18,7 @@ static CHECKS: &[fn(&Data, &mut Vec<String>)] = &[ validate_discord_name, validate_duplicate_permissions, validate_permissions, + validate_rfcbot_labels, ]; pub(crate) fn validate(data: &Data) -> Result<(), Error> { @@ -284,6 +285,19 @@ fn validate_permissions(data: &Data, errors: &mut Vec<String>) { }); } +/// Ensure there are no duplicate rfcbot labels +fn validate_rfcbot_labels(data: &Data, errors: &mut Vec<String>) { + let mut labels = HashSet::new(); + wrapper(data.teams(), errors, move |team, errors| { + if let Some(rfcbot) = team.rfcbot_data() { + if !labels.insert(rfcbot.label.clone()) { + errors.push(format!("duplicate rfcbot label: {}", rfcbot.label)); + } + } + Ok(()) + }); +} + fn wrapper<T, I, F>(iter: I, errors: &mut Vec<String>, mut func: F) where I: Iterator<Item = T>, |