#![forbid(unsafe_code)]
#[cfg(feature = "async")]
pub mod async_glob;
pub mod batch_io;
pub mod error;
pub mod options;
pub mod patterns;
pub mod predicates;
pub mod sync;
pub mod windows;
pub use crate::error::GlobError;
pub use crate::options::{GlobOptions, GlobOptionsBuilder};
pub use crate::patterns::Patterns;
pub use crate::predicates::Predicates;
use std::path::PathBuf;
pub struct PatternHunt;
impl PatternHunt {
pub fn sync(
patterns: &[&str],
roots: &[&str],
opts: GlobOptions,
) -> Result<Vec<PathBuf>, GlobError> {
let pats = Patterns::compile_many(patterns, &opts)?;
let preds = opts.predicates.clone();
let mut results = Vec::new();
for r in roots {
let _root = std::path::Path::new(r);
let mut v = crate::sync::glob_sync(pats.clone(), opts.clone(), preds.clone())?;
results.append(&mut v);
}
Ok(results)
}
#[cfg(feature = "async")]
pub fn stream(
patterns: &[&str],
_roots: &[&str],
opts: GlobOptions,
) -> Result<impl futures::Stream<Item = Result<PathBuf, GlobError>>, GlobError> {
let pats = Patterns::compile_many(patterns, &opts)?;
let preds = opts.predicates.clone();
Ok(crate::async_glob::glob_stream(pats, opts, preds))
}
}