@@ -609,13 +609,10 @@ fn validate_discord_team_members_have_discord_ids(data: &Data, errors: &mut Vec<
609609 } ) ;
610610}
611611
612- /// Ensure every member of a team that has a Zulip group either has a Zulip id or an email address
612+ /// Ensure every member of a team that has a Zulip group has a Zulip id
613613fn validate_zulip_users ( data : & Data , zulip : & ZulipApi , errors : & mut Vec < String > ) {
614- let ( by_id, by_email) = match zulip. get_users ( ) {
615- Ok ( u) => (
616- u. iter ( ) . map ( |u| u. user_id ) . collect :: < HashSet < _ > > ( ) ,
617- u. into_iter ( ) . map ( |u| u. email ) . collect :: < HashSet < _ > > ( ) ,
618- ) ,
614+ let by_id = match zulip. get_users ( ) {
615+ Ok ( u) => u. iter ( ) . map ( |u| u. user_id ) . collect :: < HashSet < _ > > ( ) ,
619616 Err ( err) => {
620617 errors. push ( format ! ( "couldn't verify Zulip users: {}" , err) ) ;
621618 return ;
@@ -633,8 +630,15 @@ fn validate_zulip_users(data: &Data, zulip: &ZulipApi, errors: &mut Vec<String>)
633630 . members ( )
634631 . iter ( )
635632 . filter_map ( |m| match m {
636- ZulipGroupMember :: Id ( i) if !by_id. contains ( i) => Some ( format ! ( "{}" , i) ) ,
637- ZulipGroupMember :: Email ( e) if !by_email. contains ( e) => Some ( e. clone ( ) ) ,
633+ ZulipGroupMember :: MemberWithId { github, zulip_id }
634+ if !by_id. contains ( zulip_id) =>
635+ {
636+ Some ( github. clone ( ) )
637+ }
638+ ZulipGroupMember :: JustId ( zulip_id) if !by_id. contains ( zulip_id) => {
639+ Some ( format ! ( "ID: {zulip_id}" ) )
640+ }
641+ ZulipGroupMember :: MemberWithoutId { github } => Some ( github. clone ( ) ) ,
638642 _ => None ,
639643 } )
640644 . collect :: < HashSet < _ > > ( ) ;
@@ -649,7 +653,7 @@ fn validate_zulip_users(data: &Data, zulip: &ZulipApi, errors: &mut Vec<String>)
649653 } )
650654}
651655
652- /// Ensure every member of a team that has a Zulip group either has a Zulip id or an email address
656+ /// Ensure every member of a team that has a Zulip group either has a Zulip id
653657fn validate_zulip_group_ids ( data : & Data , errors : & mut Vec < String > ) {
654658 wrapper ( data. teams ( ) , errors, |team, errors| {
655659 let groups = team. zulip_groups ( data) ?;
@@ -659,11 +663,9 @@ fn validate_zulip_group_ids(data: &Data, errors: &mut Vec<String>) {
659663 }
660664 wrapper ( team. members ( data) . iter ( ) , errors, |member, _| {
661665 if let Some ( member) = data. person ( member) {
662- if member. zulip_id ( ) . is_none ( )
663- && matches ! ( member. email( ) , Email :: Missing | Email :: Disabled )
664- {
666+ if member. zulip_id ( ) . is_none ( ) {
665667 bail ! (
666- "person `{}` in '{}' is a member of a Zulip user group but has no Zulip id nor an enabled email address " ,
668+ "person `{}` in '{}' is a member of a Zulip user group but has no Zulip id" ,
667669 member. github( ) ,
668670 team. name( )
669671 ) ;
0 commit comments