diff options
author | Pietro Albini <pietro@pietroalbini.org> | 2018-11-30 12:31:39 +0100 |
---|---|---|
committer | Pietro Albini <pietro@pietroalbini.org> | 2018-11-30 12:31:39 +0100 |
commit | 895daaf5e1759973c641f448e076d47d44d156d5 (patch) | |
tree | 575a16c09a10676737fa8460fc4c4b2784c2732f /src | |
parent | 584b4616ebecd82fb8b3fbb17730f21bbf96bf3b (diff) |
import data from the new website
Diffstat (limited to 'src')
-rw-r--r-- | src/schema.rs | 5 | ||||
-rw-r--r-- | src/validate.rs | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/schema.rs b/src/schema.rs index 87663cd..de30b08 100644 --- a/src/schema.rs +++ b/src/schema.rs @@ -162,11 +162,14 @@ struct TeamPeople { } #[derive(serde_derive::Deserialize, Debug)] -#[serde(deny_unknown_fields)] +#[serde(rename_all = "kebab-case", deny_unknown_fields)] pub(crate) struct WebsiteData { name: String, description: String, email: Option<String>, + repo: Option<String>, + discord_invite: Option<String>, + discord_name: Option<String>, } #[derive(serde_derive::Deserialize, Debug)] diff --git a/src/validate.rs b/src/validate.rs index 6c6830d..3c2d6c7 100644 --- a/src/validate.rs +++ b/src/validate.rs @@ -6,6 +6,7 @@ use std::collections::HashSet; pub(crate) fn validate(data: &Data) -> Result<(), Error> { let mut errors = Vec::new(); + validate_wg_names(data, &mut errors); validate_team_leads(data, &mut errors); validate_team_members(data, &mut errors); validate_inactive_members(data, &mut errors); @@ -30,6 +31,18 @@ pub(crate) fn validate(data: &Data) -> Result<(), Error> { Ok(()) } +/// Ensure working group names start with `wg-` +fn validate_wg_names(data: &Data, errors: &mut Vec<String>) { + wrapper(data.teams(), errors, |team, _| { + match (team.is_wg() == team.name().starts_with("wg-"), team.is_wg()) { + (false, true) => bail!("working group `{}`'s name doesn't start with wg-", team.name()), + (false, false) => bail!("team `{}` seems like a working group but has `wg = false`", team.name()), + (true, _) => {} + } + Ok(()) + }); +} + /// Ensure team leaders are part of the teams they lead fn validate_team_leads(data: &Data, errors: &mut Vec<String>) { wrapper(data.teams(), errors, |team, errors| { |