aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs28
1 files changed, 22 insertions, 6 deletions
diff --git a/src/main.rs b/src/main.rs
index ffda552..d56ffdd 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -4,7 +4,7 @@ use tokio;
use reflectub::{database, git, github};
-use std::path::Path;
+use std::path::{Path, PathBuf};
#[tokio::main]
@@ -58,6 +58,7 @@ async fn main() {
for repo in test_repos {
let id = repo.id;
+ let path = clone_path("/tmp", &repo);
let db_repo = database::Repo::from(&repo);
match db.repo_get(id).await {
@@ -70,7 +71,7 @@ async fn main() {
},
Err(database::Error::Db(sqlx::Error::RowNotFound)) => {
- mirror(&repo).unwrap();
+ mirror(&path, &repo).unwrap();
db.repo_insert(db_repo).await.unwrap();
},
@@ -81,14 +82,29 @@ async fn main() {
}
-fn mirror(repo: &github::Repo) -> anyhow::Result<()> {
+fn clone_path<P: AsRef<Path>>(base_path: P, repo: &github::Repo) -> PathBuf {
+ let git_dir = format!("{}.git", repo.name);
+
+ if repo.fork {
+ base_path
+ .as_ref()
+ .join("fork")
+ .join(git_dir)
+ } else {
+ base_path
+ .as_ref()
+ .join(git_dir)
+ }
+}
+
+fn mirror<P: AsRef<Path>>(
+ clone_path: P,
+ repo: &github::Repo,
+) -> anyhow::Result<()> {
// mirror database
// update description
// copy cgitrc
- let clone_path = Path::new("/tmp")
- .join(format!("{}.git", repo.name));
-
git::mirror(
&repo.git_url,
&clone_path,