Skip to content

Commit 65a2b9e

Browse files
Merge pull request #833 from rylev/exclude-from-zulip
Add option for excluding people from a Zulip user group
2 parents c973d52 + a124bc9 commit 65a2b9e

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

docs/toml-schema.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,6 @@ include-team-members = true
115115
extra-people = [
116116
"alexcrichton",
117117
]
118-
# Include the following email addresses in the Zulip group (optional).
119-
extra-emails = [
120-
"noreply@rust-lang.org",
121-
]
122118
# Include the following Zulip ids in the Zulip group (optional).
123119
extra-zulip-ids = [
124120
1234
@@ -128,6 +124,10 @@ extra-zulip-ids = [
128124
extra-teams = [
129125
"bots-nursery",
130126
]
127+
# Exclude the following people in the Zulip group (optional).
128+
excluded-people = [
129+
"rylev",
130+
]
131131
```
132132

133133
## Permissions

src/schema.rs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ impl Team {
313313
let zulip_groups = &self.zulip_groups;
314314

315315
for raw_group in zulip_groups {
316-
let mut list = ZulipGroup {
316+
let mut group = ZulipGroup {
317317
name: raw_group.name.clone(),
318318
includes_team_members: raw_group.include_team_members,
319319
members: Vec::new(),
@@ -335,25 +335,27 @@ impl Team {
335335
members.insert(member);
336336
}
337337
}
338+
for excluded in &raw_group.excluded_people {
339+
if !members.remove(excluded.as_str()) {
340+
bail!("'{excluded}' was specifically excluded from the Zulip group '{}' but they were already not included", raw_group.name);
341+
}
342+
}
338343

339344
for member in members.iter() {
340-
let member = data
341-
.person(member)
342-
.ok_or_else(|| err_msg(format!("member {} is missing", member)))?;
345+
let member = data.person(member).ok_or_else(|| {
346+
err_msg(format!("{} does not have a person configuration", member))
347+
})?;
343348
let member = match (member.zulip_id, member.email()) {
344349
(Some(zulip_id), _) => ZulipGroupMember::Id(zulip_id),
345350
(_, Email::Present(email)) => ZulipGroupMember::Email(email.to_string()),
346351
_ => ZulipGroupMember::Missing,
347352
};
348-
list.members.push(member);
349-
}
350-
for extra in &raw_group.extra_emails {
351-
list.members.push(ZulipGroupMember::Email(extra.clone()));
353+
group.members.push(member);
352354
}
353355
for &extra in &raw_group.extra_zulip_ids {
354-
list.members.push(ZulipGroupMember::Id(extra));
356+
group.members.push(ZulipGroupMember::Id(extra));
355357
}
356-
groups.push(list);
358+
groups.push(group);
357359
}
358360
Ok(groups)
359361
}
@@ -576,9 +578,9 @@ pub(crate) struct RawZulipGroup {
576578
#[serde(default)]
577579
pub(crate) extra_zulip_ids: Vec<usize>,
578580
#[serde(default)]
579-
pub(crate) extra_emails: Vec<String>,
580-
#[serde(default)]
581581
pub(crate) extra_teams: Vec<String>,
582+
#[serde(default)]
583+
pub(crate) excluded_people: Vec<String>,
582584
}
583585

584586
#[derive(Debug)]

0 commit comments

Comments
 (0)