summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin Wernick <justin@worthe-it.co.za>2023-04-09 22:13:34 +0200
committerJustin Wernick <justin@worthe-it.co.za>2023-04-09 22:13:34 +0200
commit9d8995a8f64d589744c57abc9201b37e1442e0fb (patch)
tree3c66d33d07a9b1b91c1b592126b36b1d044ad4c3 /src
parentea5682e7291b9839778a6c3e75fcbc42515ef6ea (diff)
Updating descriptions now works on init too
Diffstat (limited to 'src')
-rw-r--r--src/git.rs48
1 files changed, 16 insertions, 32 deletions
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<String>,
description: &Option<String>,
) -> Result<GitInitResult, ShackleError> {
- 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 })
}