Calculate repo count on start and increment when a new repo is cloned
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
eb718990ec
commit
8d4de48c11
24
src/count.rs
Normal file
24
src/count.rs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
use crate::error::Result;
|
||||||
|
use std::{fs::read_dir, path::Path, result::Result as StdResult};
|
||||||
|
|
||||||
|
pub(crate) fn count_repositories<P>(repo_path: P) -> Result<usize>
|
||||||
|
where
|
||||||
|
P: AsRef<Path>,
|
||||||
|
{
|
||||||
|
Ok(read_dir(repo_path)?
|
||||||
|
.filter_map(StdResult::ok)
|
||||||
|
.filter(|entry| entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false))
|
||||||
|
.map(|entry| read_dir(entry.path()))
|
||||||
|
.filter_map(StdResult::ok)
|
||||||
|
.flat_map(|dir| {
|
||||||
|
dir.filter_map(StdResult::ok)
|
||||||
|
.filter(|entry| entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false))
|
||||||
|
})
|
||||||
|
.map(|entry| read_dir(entry.path()))
|
||||||
|
.filter_map(StdResult::ok)
|
||||||
|
.flat_map(|dir| {
|
||||||
|
dir.filter_map(StdResult::ok)
|
||||||
|
.filter(|entry| entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false))
|
||||||
|
})
|
||||||
|
.count())
|
||||||
|
}
|
@ -1,3 +1,5 @@
|
|||||||
|
#![type_length_limit = "2257138"]
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate actix_web;
|
extern crate actix_web;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
@ -9,6 +11,7 @@ extern crate serde_derive;
|
|||||||
|
|
||||||
mod cache;
|
mod cache;
|
||||||
mod config;
|
mod config;
|
||||||
|
mod count;
|
||||||
mod error;
|
mod error;
|
||||||
mod service;
|
mod service;
|
||||||
mod statics;
|
mod statics;
|
||||||
@ -34,6 +37,7 @@ use std::{
|
|||||||
fs::create_dir_all,
|
fs::create_dir_all,
|
||||||
path::Path,
|
path::Path,
|
||||||
process::Command,
|
process::Command,
|
||||||
|
sync::atomic::Ordering,
|
||||||
sync::Arc,
|
sync::Arc,
|
||||||
time::{Duration, SystemTime},
|
time::{Duration, SystemTime},
|
||||||
};
|
};
|
||||||
@ -169,6 +173,7 @@ fn hoc_request<T: Service>(
|
|||||||
let repo = Repository::init_bare(file)?;
|
let repo = Repository::init_bare(file)?;
|
||||||
repo.remote_add_fetch("origin", "refs/heads/*:refs/heads/*")?;
|
repo.remote_add_fetch("origin", "refs/heads/*:refs/heads/*")?;
|
||||||
repo.remote_set_url("origin", &url)?;
|
repo.remote_set_url("origin", &url)?;
|
||||||
|
REPO_COUNT.fetch_add(1, Ordering::Relaxed);
|
||||||
}
|
}
|
||||||
pull(&path)?;
|
pull(&path)?;
|
||||||
let (hoc, head) = hoc(&service_path, &state.repos, &state.cache)?;
|
let (hoc, head) = hoc(&service_path, &state.repos, &state.cache)?;
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
use crate::{config::Opt, count::count_repositories};
|
||||||
|
use std::sync::atomic::AtomicUsize;
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
|
|
||||||
pub struct VersionInfo<'a> {
|
pub struct VersionInfo<'a> {
|
||||||
@ -15,4 +17,6 @@ pub(crate) const FAVICON: &[u8] = include_bytes!("../static/favicon32.png");
|
|||||||
lazy_static! {
|
lazy_static! {
|
||||||
pub(crate) static ref CLIENT: reqwest::Client = reqwest::Client::new();
|
pub(crate) static ref CLIENT: reqwest::Client = reqwest::Client::new();
|
||||||
pub(crate) static ref OPT: Opt = Opt::from_args();
|
pub(crate) static ref OPT: Opt = Opt::from_args();
|
||||||
|
pub(crate) static ref REPO_COUNT: AtomicUsize =
|
||||||
|
AtomicUsize::new(count_repositories(&OPT.outdir).unwrap());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user