diff options
Diffstat (limited to 'src/static_api.rs')
-rw-r--r-- | src/static_api.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/static_api.rs b/src/static_api.rs index 24bd989..3348d74 100644 --- a/src/static_api.rs +++ b/src/static_api.rs @@ -25,6 +25,7 @@ impl<'a> Generator<'a> { self.generate_teams()?; self.generate_lists()?; self.generate_permissions()?; + self.generate_rfcbot()?; Ok(()) } @@ -112,6 +113,33 @@ impl<'a> Generator<'a> { Ok(()) } + fn generate_rfcbot(&self) -> Result<(), Error> { + let mut teams = IndexMap::new(); + + for team in self.data.teams() { + if let Some(rfcbot) = team.rfcbot_data() { + let mut members = team + .members(&self.data)? + .into_iter() + .map(|s| s.to_string()) + .collect::<Vec<_>>(); + members.sort(); + teams.insert( + rfcbot.label.clone(), + v1::RfcbotTeam { + name: rfcbot.name.clone(), + ping: rfcbot.ping.clone(), + members, + }, + ); + } + } + + teams.sort_keys(); + self.add("v1/rfcbot.json", &v1::Rfcbot { teams })?; + Ok(()) + } + fn add<T: serde::Serialize>(&self, path: &str, obj: &T) -> Result<(), Error> { info!("writing API object {}...", path); let dest = self.dest.join(path); |