diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 59 |
1 files changed, 26 insertions, 33 deletions
diff --git a/src/main.rs b/src/main.rs index 3e17c06..79ea0fa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -34,7 +34,7 @@ use std::fs; use std::io; use std::path::{Path, PathBuf}; use std::process; -use std::sync::Arc; +use std::sync::{Arc, Mutex}; fn main() { @@ -125,39 +125,32 @@ async fn run() -> anyhow::Result<()> { let repos = github::fetch_repos(username).await?; - let db = Arc::new( - tokio::sync::Mutex::new( - database::Db::connect(&database_file)?, - ) - ); + let mut db = database::Db::connect(&database_file)?; - db.lock().await - .create()?; + db.create()?; // let mut joins = futures::stream::FuturesUnordered::new(); - let mut joins = Vec::with_capacity(repos.len()); + // let mut joins = Vec::with_capacity(repos.len()); let mut i = 0; for repo in repos { - let db = db.clone(); + // let db = db.clone(); let mirror_root = mirror_root.clone(); let base_cgitrc = base_cgitrc.clone(); // let join = tokio::runtime::Handle::current().spawn(async move { - let join = tokio::task::spawn(async move { - let mut db = db.lock().await; - dbg!("processing on", std::thread::current().id()); + // let mut db = db.lock()?; - process_repo( - &repo, - &mut db, - &mirror_root, - base_cgitrc, - max_repo_size_bytes, - ).await - }); + process_repo( + &repo, + &mut db, + &mirror_root, + base_cgitrc, + max_repo_size_bytes, + ); + // }); - joins.push(join); + // joins.push(join); if i == 5 { break; @@ -166,29 +159,29 @@ async fn run() -> anyhow::Result<()> { } // executor::block_on(future::join_all(joins)); - let mut joins = tokio_stream::iter(&mut joins); - let mut results = Vec::new(); - - while let Some(task) = joins.next().await { - let result = task.await; - results.push(result); - } + // let mut joins = tokio_stream::iter(&mut joins); + // let mut results = Vec::new(); + // + // while let Some(task) = joins.next().await { + // let result = task.await; + // results.push(result); + // } // for task in joins { // // results.push(task.await); // results.push(tokio::join!(task)); // } - let errors = results.iter() - .filter(|r| r.is_err()); + // let errors = results.iter() + // .filter(|r| r.is_err()); - dbg!(&errors); + // dbg!(&errors); Ok(()) } /// Mirror or update `repo`. -async fn process_repo( +fn process_repo( repo: &github::Repo, db: &mut database::Db, mirror_root: &str, |