use std::path::PathBuf;
use gix_dir::walk::{CollapsedEntriesEmissionMode, EmissionMode, ForDeletionMode};
#[cfg(feature = "parallel")]
use crate::Result;
use crate::{AttributeStack, Pathspec};
mod options;
pub mod iter;
pub struct Iter {
#[cfg(feature = "parallel")]
rx_and_join: Option<(
std::sync::mpsc::Receiver<iter::Item>,
std::thread::JoinHandle<Result<iter::Outcome>>,
)>,
#[cfg(feature = "parallel")]
should_interrupt: crate::util::OwnedOrStaticAtomicBool,
#[cfg(not(feature = "parallel"))]
items: std::vec::IntoIter<iter::Item>,
out: Option<iter::Outcome>,
}
pub struct Outcome<'repo> {
pub excludes: AttributeStack<'repo>,
pub pathspec: Pathspec<'repo>,
pub traversal_root: PathBuf,
pub dirwalk: gix_dir::walk::Outcome,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Ord, PartialOrd)]
pub struct Options {
precompose_unicode: bool,
ignore_case: bool,
recurse_repositories: bool,
emit_pruned: bool,
emit_ignored: Option<EmissionMode>,
for_deletion: Option<ForDeletionMode>,
emit_tracked: bool,
emit_untracked: EmissionMode,
emit_empty_directories: bool,
classify_untracked_bare_repositories: bool,
emit_collapsed: Option<CollapsedEntriesEmissionMode>,
symlinks_to_directories_are_ignored_like_directories: bool,
pub(crate) empty_patterns_match_prefix: bool,
}