diff options
author | Pietro Albini <pietro@pietroalbini.org> | 2019-02-05 10:27:20 +0100 |
---|---|---|
committer | Pietro Albini <pietro@pietroalbini.org> | 2019-02-05 10:27:20 +0100 |
commit | 670c2d554bdbbe13e98deff3d6821b894943b812 (patch) | |
tree | ef7428afdf5fd05af3bfd45c153d239c26c83ef2 /src | |
parent | 9a81125fc2bce72c2de49ce7813ab393ea4ae121 (diff) |
add mailing lists to the static API
Diffstat (limited to 'src')
-rw-r--r-- | src/static_api.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/static_api.rs b/src/static_api.rs index 1beea23..164cfbe 100644 --- a/src/static_api.rs +++ b/src/static_api.rs @@ -22,6 +22,7 @@ impl<'a> Generator<'a> { pub(crate) fn generate(&self) -> Result<(), Error> { self.generate_teams()?; + self.generate_lists()?; Ok(()) } @@ -78,6 +79,26 @@ impl<'a> Generator<'a> { Ok(()) } + fn generate_lists(&self) -> Result<(), Error> { + let mut lists = IndexMap::new(); + + for list in self.data.lists()?.values() { + let mut members = list.emails().to_vec(); + members.sort(); + lists.insert(list.address().to_string(), v1::List { + address: list.address().to_string(), + members, + }); + } + + lists.sort_keys(); + self.add( + "v1/lists.json", + &v1::Lists { lists }, + )?; + Ok(()) + } + fn add<T: serde::Serialize>(&self, path: &str, obj: &T) -> Result<(), Error> { info!("writing API object {}...", path); let dest = self.dest.join(path); |