diff options
author | Justin Wernick <justin@worthe-it.co.za> | 2023-03-20 23:18:41 +0200 |
---|---|---|
committer | Justin Wernick <justin@worthe-it.co.za> | 2023-03-20 23:18:41 +0200 |
commit | 2b827a0ab06fb715290a0450a3fff56d3e6f4ee6 (patch) | |
tree | b5e24df3fa573afd07b55a2330e88cabe2394e3f /src/git.rs | |
parent | ae4b23d95dc8792231c1e8212978be8305ee1964 (diff) |
Put git repos into a user-specific dir
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> { |