summaryrefslogtreecommitdiffstats
path: root/src/static_api.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/static_api.rs')
-rw-r--r--src/static_api.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/static_api.rs b/src/static_api.rs
index 33bac41..24bd989 100644
--- a/src/static_api.rs
+++ b/src/static_api.rs
@@ -1,4 +1,5 @@
use crate::data::Data;
+use crate::schema::Permissions;
use failure::Error;
use indexmap::IndexMap;
use log::info;
@@ -23,6 +24,7 @@ impl<'a> Generator<'a> {
pub(crate) fn generate(&self) -> Result<(), Error> {
self.generate_teams()?;
self.generate_lists()?;
+ self.generate_permissions()?;
Ok(())
}
@@ -96,6 +98,20 @@ impl<'a> Generator<'a> {
Ok(())
}
+ fn generate_permissions(&self) -> Result<(), Error> {
+ for perm in Permissions::AVAILABLE {
+ let mut github_users = crate::permissions::allowed_github_users(&self.data, perm)?
+ .into_iter()
+ .collect::<Vec<_>>();
+ github_users.sort();
+ self.add(
+ &format!("v1/permissions/{}.json", perm),
+ &v1::Permission { github_users },
+ )?;
+ }
+ Ok(())
+ }
+
fn add<T: serde::Serialize>(&self, path: &str, obj: &T) -> Result<(), Error> {
info!("writing API object {}...", path);
let dest = self.dest.join(path);