From d7ac6f915079c2385be902106f97b994f5f65bc5 Mon Sep 17 00:00:00 2001 From: Justin Wernick Date: Wed, 5 Apr 2023 19:54:16 +0200 Subject: Nicer error handling on reading config --- src/git.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/git.rs b/src/git.rs index bfac79b..3e6ef98 100644 --- a/src/git.rs +++ b/src/git.rs @@ -2,7 +2,7 @@ use crate::{ parser::{GitReceivePackArgs, GitUploadPackArgs}, ShackleError, }; -use git2::{Repository, RepositoryInitMode, RepositoryInitOptions}; +use git2::{ErrorCode, Repository, RepositoryInitMode, RepositoryInitOptions}; use std::{fs, path::PathBuf, process::Command}; use user_info::{get_user_groups, get_username}; @@ -126,9 +126,15 @@ pub fn list() -> Result, ShackleError> { if has_git_ext { if let Ok(repo) = Repository::open_bare(&path) { let config = repo.config()?.snapshot()?; - let shared_config = config.get_str("core.sharedRepository").ok(); // TODO: Could shis fail for other reasons? + let shared_config = config.get_str("core.sharedRepository").or_else(|e| { + if e.code() == ErrorCode::NotFound { + Ok("") + } else { + Err(e) + } + })?; let is_group_shared = - [Some("group"), Some("1"), Some("true")].contains(&shared_config); + [Some("group"), Some("1"), Some("true")].contains(&Some(shared_config)); if is_group_shared == is_checking_group { let description = if description_path.is_file() { -- cgit v1.2.3