From c21d81998d3cf573a4b0333f81c22494906cb111 Mon Sep 17 00:00:00 2001 From: Justin Wernick Date: Fri, 7 Apr 2023 11:59:25 +0200 Subject: Set the description while initting the repo This should work, but doesn't seem to. --- src/git.rs | 50 +++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/git.rs b/src/git.rs index 1271712..82f32dd 100644 --- a/src/git.rs +++ b/src/git.rs @@ -70,41 +70,45 @@ pub fn init( group: &Option, description: &Option, ) -> Result { - fn init_group(repo_name: &str, group: &str) -> Result { + fn init_group_opts( + repo_name: &str, + group: &str, + ) -> Result<(PathBuf, RepositoryInitOptions), ShackleError> { if !verify_user_is_in_group(group) { return Err(ShackleError::InvalidGroup); } let path = group_git_dir(group).join(repo_name).with_extension("git"); - - Repository::init_opts( - &path, - &RepositoryInitOptions::new() - .bare(true) - .mode(RepositoryInitMode::SHARED_GROUP) - .mkdir(true) - .no_reinit(true), - )?; - Ok(GitInitResult { path }) + let mut init_opts = RepositoryInitOptions::new(); + init_opts + .bare(true) + .mode(RepositoryInitMode::SHARED_GROUP) + .mkdir(true) + .no_reinit(true); + + Ok((path, init_opts)) } - fn init_personal(repo_name: &str) -> Result { + fn init_personal_opts( + repo_name: &str, + ) -> Result<(PathBuf, RepositoryInitOptions), ShackleError> { let path = personal_git_dir()?.join(repo_name).with_extension("git"); + let mut init_opts = RepositoryInitOptions::new(); + init_opts.bare(true).mkdir(true).no_reinit(true); - Repository::init_opts( - &path, - &RepositoryInitOptions::new() - .bare(true) - .mkdir(true) - .no_reinit(true), - )?; - Ok(GitInitResult { path }) + Ok((path, init_opts)) } - match group { - Some(group) => init_group(repo_name, group), - None => init_personal(repo_name), + let (path, mut init_opts) = match group { + Some(group) => init_group_opts(repo_name, group)?, + None => init_personal_opts(repo_name)?, + }; + if let Some(description) = description { + init_opts.description(description); } + + Repository::init_opts(&path, &init_opts)?; + Ok(GitInitResult { path }) } pub struct RepoMetadata { -- cgit v1.2.3