summaryrefslogtreecommitdiff
path: root/src/git.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/git.rs')
-rw-r--r--src/git.rs20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/git.rs b/src/git.rs
index b3c41e9..753f53a 100644
--- a/src/git.rs
+++ b/src/git.rs
@@ -1,22 +1,30 @@
-use crate::parser::{GitReceivePackArgs, GitUploadPackArgs};
-use crate::ShackleError;
-
+use crate::{
+ parser::{GitReceivePackArgs, GitUploadPackArgs},
+ user::get_username,
+ ShackleError,
+};
use git2::{Repository, RepositoryInitOptions};
use std::{path::PathBuf, process::Command};
-pub fn init(repo_name: &str) -> Result<(), ShackleError> {
+pub struct GitInitResult {
+ pub path: PathBuf,
+}
+
+pub fn init(repo_name: &str) -> Result<GitInitResult, ShackleError> {
+ let username = get_username().ok_or(ShackleError::UserReadError)?;
let mut path = PathBuf::from("git");
+ path.push(username);
path.push(repo_name);
path.set_extension("git");
Repository::init_opts(
- path,
+ &path,
&RepositoryInitOptions::new()
.bare(true)
.mkdir(true)
.no_reinit(true),
)?;
- Ok(())
+ Ok(GitInitResult { path })
}
pub fn upload_pack(upload_pack_args: &GitUploadPackArgs) -> Result<(), ShackleError> {