use std::collections::HashSet;
use std::path::PathBuf;
use ignore::WalkBuilder;
use crate::Ecosystem;
#[derive(Debug)]
pub enum CruxlinesError {
ReadFile {
path: PathBuf,
source: std::io::Error,
},
}
pub fn gather_paths(repo_root: &PathBuf, ecosystems: &HashSet<Ecosystem>) -> Vec<PathBuf> {
let builder = WalkBuilder::new(repo_root);
let mut paths = Vec::new();
for entry in builder.build() {
let entry = match entry {
Ok(entry) => entry,
Err(_) => continue,
};
if !entry
.file_type()
.map(|file_type| file_type.is_file())
.unwrap_or(false)
{
continue;
}
let path = entry.path();
let Some(ecosystem) = crate::ecosystem_for_path(path) else {
continue;
};
if !ecosystems.contains(&ecosystem) {
continue;
}
paths.push(path.to_path_buf());
}
paths
}