From bfea2ee79db0030db31c4f89d3f9e4f9487bc57d Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Sun, 3 Mar 2019 21:41:32 +0100 Subject: validate: avoid crashing if a member doesn't exist --- src/validate.rs | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/validate.rs b/src/validate.rs index cce801f..93a87ac 100644 --- a/src/validate.rs +++ b/src/validate.rs @@ -136,12 +136,13 @@ fn validate_list_email_addresses(data: &Data, errors: &mut Vec) { return Ok(()); } wrapper(team.members(data)?.iter(), errors, |member, _| { - let member = data.person(member).unwrap(); - if let Email::Missing = member.email() { - bail!( - "person `{}` is a member of a mailing list but has no email address", - member.github() - ); + if let Some(member) = data.person(member) { + if let Email::Missing = member.email() { + bail!( + "person `{}` is a member of a mailing list but has no email address", + member.github() + ); + } } Ok(()) }); @@ -240,16 +241,17 @@ fn validate_discord_name(data: &Data, errors: &mut Vec) { fn validate_duplicate_permissions(data: &Data, errors: &mut Vec) { wrapper(data.teams(), errors, |team, errors| { wrapper(team.members(&data)?.iter(), errors, |member, _| { - let person = data.person(member).unwrap(); - for permission in Permissions::AVAILABLE { - if team.permissions().has(permission) && person.permissions().has(permission) { - bail!( - "user `{}` has the permission `{}` both explicitly and through \ - the `{}` team", - member, - permission, - team.name() - ); + if let Some(person) = data.person(member) { + for permission in Permissions::AVAILABLE { + if team.permissions().has(permission) && person.permissions().has(permission) { + bail!( + "user `{}` has the permission `{}` both explicitly and through \ + the `{}` team", + member, + permission, + team.name() + ); + } } } Ok(()) -- cgit v1.2.3