use crate::error::Result; use std::{fs::read_dir, path::Path, result::Result as StdResult}; #[instrument] pub(crate) fn count_repositories

(repo_path: P) -> Result where P: AsRef + std::fmt::Debug, { trace!("Counting repositories"); std::fs::create_dir_all(&repo_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()) }