From 9d8995a8f64d589744c57abc9201b37e1442e0fb Mon Sep 17 00:00:00 2001 From: Justin Wernick Date: Sun, 9 Apr 2023 22:13:34 +0200 Subject: Updating descriptions now works on init too --- src/git.rs | 48 ++++++++++++++++-------------------------------- 1 file changed, 16 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/git.rs b/src/git.rs index 979e7b9..4b1ec0d 100644 --- a/src/git.rs +++ b/src/git.rs @@ -70,44 +70,28 @@ pub fn init( group: &Option, description: &Option, ) -> 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"); - 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_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); + let mut init_opts = RepositoryInitOptions::new(); + init_opts.bare(true).mkdir(true).no_reinit(true); - Ok((path, init_opts)) - } + let path = match group { + Some(group) => { + if !verify_user_is_in_group(group) { + return Err(ShackleError::InvalidGroup); + } - let (path, mut init_opts) = match group { - Some(group) => init_group_opts(repo_name, group)?, - None => init_personal_opts(repo_name)?, + init_opts.mode(RepositoryInitMode::SHARED_GROUP); + group_git_dir(group).join(repo_name).with_extension("git") + } + None => personal_git_dir()?.join(repo_name).with_extension("git"), }; + + Repository::init_opts(&path, &init_opts)?; if let Some(description) = description { - init_opts.description(description); + // There is an init option for setting the description but it seems to + // just do nothing? + set_description(&path, &description)?; } - Repository::init_opts(&path, &init_opts)?; Ok(GitInitResult { path }) } -- cgit v1.2.3