use crate::env::Env;
use std::path::PathBuf;
#[cfg(all(target_os = "macos", feature = "macos-gui"))]
mod macos_gui;
#[cfg(all(target_os = "macos", feature = "macos-gui"))]
pub use macos_gui::MacOSGuiDirectoryFinder;
#[cfg(windows)]
mod windows;
#[cfg(windows)]
pub use windows::WindowsDirectoryFinder;
#[cfg(any(unix, not(feature = "macos-gui")))]
mod unix;
#[cfg(any(unix, not(feature = "macos-gui")))]
pub use unix::UnixDirectoryFinder;
pub trait DirectoryFinder: Send + Sync {
fn user_dirs(&self, env: &dyn Env) -> Vec<PathBuf>;
fn local_dirs(&self, env: &dyn Env) -> Vec<PathBuf>;
fn system_dirs(&self, env: &dyn Env) -> Vec<PathBuf>;
}
#[derive(Debug, Clone)]
pub struct DirectoryInfo {
pub path: PathBuf,
pub tier: crate::ConfigTier,
pub exists: bool,
}