diff options
Diffstat (limited to 'src/git.rs')
-rw-r--r-- | src/git.rs | 20 |
1 files changed, 14 insertions, 6 deletions
@@ -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> { |