summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPietro Albini <pietro@pietroalbini.org>2019-02-05 10:27:20 +0100
committerPietro Albini <pietro@pietroalbini.org>2019-02-05 10:27:20 +0100
commit670c2d554bdbbe13e98deff3d6821b894943b812 (patch)
treeef7428afdf5fd05af3bfd45c153d239c26c83ef2 /src
parent9a81125fc2bce72c2de49ce7813ab393ea4ae121 (diff)
add mailing lists to the static API
Diffstat (limited to 'src')
-rw-r--r--src/static_api.rs21
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);