diff options
| author | Max Audron <audron@cocaine.farm> | 2022-06-07 12:28:18 +0200 |
|---|---|---|
| committer | Maximilian Manz <maximilian.manz@de.clara.net> | 2022-06-20 11:33:04 +0200 |
| commit | 7e73ebcad03a5477367763d4a5e9c22f9e9967ca (patch) | |
| tree | 39e543ec482be2e95c512b45f6dbdbe816dc0992 /src/main.rs | |
| parent | fix clippy lints (diff) | |
process sync and update in parallel
Split the repos up in x batches where x is either decided on based on
number of cpu cores available or given by the --jobs argument
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/main.rs b/src/main.rs index e37427c..8b72a34 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,17 +18,23 @@ mod list; mod sync; mod update; +mod batch; + #[cfg(test)] mod tests; -#[derive(Debug)] +use once_cell::sync::OnceCell; + +static GTREE: OnceCell<GTree> = OnceCell::new(); +static RUNTIME: OnceCell<Runtime> = OnceCell::new(); + +#[derive(Debug, Clone)] #[allow(dead_code)] struct GTree { figment: figment::Figment, config: config::Config, args: config::args::Args, forge: forge::Forge, - rt: Runtime, } impl GTree { @@ -44,16 +50,15 @@ impl GTree { .next() .context("No Forge configured, please setup a forge")?; - let rt = Runtime::new()?; + RUNTIME.set(Runtime::new()?).unwrap(); - let forge = rt.block_on(forge::Forge::new(forge_config))?; + let forge = RUNTIME.get().unwrap().block_on(forge::Forge::new(forge_config))?; Ok(GTree { figment, config, args, forge, - rt }) } @@ -74,7 +79,7 @@ impl GTree { Repos::from_local(forge_t.root(), &scope_t) }); - let projects = self.rt.block_on(self.forge.projects(&scope))?; + let projects = RUNTIME.get().unwrap().block_on(self.forge.projects(&scope))?; let remote = Repos::from_forge(forge.root(), projects); let local = handle.join().unwrap(); @@ -108,6 +113,7 @@ fn main() -> Result<()> { debug!("starting"); let gtree = GTree::new()?; + GTREE.set(gtree.clone()).unwrap(); gtree.run()?; |
