diff options
Diffstat (limited to 'src/controller.rs')
-rw-r--r-- | src/controller.rs | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/controller.rs b/src/controller.rs index f1bda33..1f66b44 100644 --- a/src/controller.rs +++ b/src/controller.rs @@ -121,19 +121,21 @@ struct Identity { email: String, } +fn parse_identities(repo: &Repository) -> Option<Identities> { + let rev = repo.revparse_single("refs/heads/gitpad").ok()?; + let commit = rev.into_commit().ok()?; + let tree = commit.tree().ok()?; + let entry = tree.get_path(Path::new("users.toml")).ok()?; + let blob = repo.find_blob(entry.id()).ok()?; + toml::from_slice(blob.content()).ok()? +} + impl MultiUserController { pub fn new(repo: &Repository) -> Self { - let identities: Option<Identities> = try { - let rev = repo.revparse_single("refs/heads/gitpad").ok()?; - let commit = rev.into_commit().ok()?; - let tree = commit.tree().ok()?; - let entry = tree.get_path(Path::new("users.toml")).ok()?; - let blob = repo.find_blob(entry.id()).ok()?; - toml::from_slice(blob.content()).ok()? - }; - Self { - identities: RwLock::new(identities.unwrap_or_else(|| Identities(HashMap::new()))), + identities: RwLock::new( + parse_identities(repo).unwrap_or_else(|| Identities(HashMap::new())), + ), shares_cache: RwLock::new(HashMap::new()), } } |