diff options
Diffstat (limited to 'src/static_api.rs')
-rw-r--r-- | src/static_api.rs | 16 |
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); |