aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2021-05-30 18:35:47 +0200
committerTeddy Wing2021-05-30 18:35:47 +0200
commitdf4d04b481f39018fa4146f198207f42a1fdceef (patch)
tree662cd70a9585c5a4ba220c8410e59f165580ac9a
parent850b2aadd402ab80c0d2c371fe7be3066271a1ab (diff)
downloadreflectub-df4d04b481f39018fa4146f198207f42a1fdceef.tar.bz2
main::mirror(): Copy a base cgitrc file into the mirrored repository
This lets us define common cgitrc configuration for all mirrored repos.
-rw-r--r--src/main.rs15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs
index 697ca7e..144b578 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,9 +1,10 @@
-use anyhow;
+use anyhow::{self, Context};
use sqlx;
use tokio;
use reflectub::{database, git, github};
+use std::fs;
use std::path::{Path, PathBuf};
@@ -71,7 +72,7 @@ async fn main() {
},
Err(database::Error::Db(sqlx::Error::RowNotFound)) => {
- mirror(&path, &repo).unwrap();
+ mirror(&path, &repo, &"./cgitrc".to_owned().into()).unwrap();
db.repo_insert(db_repo).await.unwrap();
},
@@ -100,6 +101,7 @@ fn clone_path<P: AsRef<Path>>(base_path: P, repo: &github::Repo) -> PathBuf {
fn mirror<P: AsRef<Path>>(
clone_path: P,
repo: &github::Repo,
+ base_cgitrc: P,
) -> anyhow::Result<()> {
// mirror database
// update description
@@ -111,6 +113,15 @@ fn mirror<P: AsRef<Path>>(
repo.description(),
)?;
+ // Copy the base cgitrc file into the newly-cloned repository.
+ let cgitrc_path = clone_path.as_ref().join("cgitrc");
+ fs::copy(&base_cgitrc, &cgitrc_path)
+ .with_context(|| format!(
+ "unable to copy '{}' to '{}'",
+ "./cgitrc",
+ &cgitrc_path.display(),
+ ))?;
+
Ok(())
}