summaryrefslogtreecommitdiff
path: root/src/git.rs
diff options
context:
space:
mode:
authorJustin Wernick <justin@worthe-it.co.za>2023-03-20 23:18:41 +0200
committerJustin Wernick <justin@worthe-it.co.za>2023-03-20 23:18:41 +0200
commit2b827a0ab06fb715290a0450a3fff56d3e6f4ee6 (patch)
treeb5e24df3fa573afd07b55a2330e88cabe2394e3f /src/git.rs
parentae4b23d95dc8792231c1e8212978be8305ee1964 (diff)
Put git repos into a user-specific dir
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> {