use std::{
collections::HashSet,
sync::{Arc, LazyLock},
};
pub static SKIP_DIRECTORIES_SET: LazyLock<Arc<HashSet<&'static str>>> = LazyLock::new(|| {
Arc::new(
[
"target",
"node_modules",
"dist",
"build",
".next",
".nuxt",
"__pycache__",
".pytest_cache",
"venv",
".venv",
"env",
".env",
"vendor",
"out",
"cache",
".cache",
"tmp",
".tmp",
"temp",
".temp",
".git",
".svn",
".hg",
".vscode",
".idea",
".vs",
"coverage",
".nyc_output",
]
.into_iter()
.collect(),
)
});
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_skip_directories_loaded() {
let dirs = &*SKIP_DIRECTORIES_SET;
assert!(!dirs.is_empty());
assert!(dirs.contains("target"));
assert!(dirs.contains("node_modules"));
assert!(dirs.contains(".git"));
}
#[test]
fn test_directories_are_cached() {
let dirs1 = &*SKIP_DIRECTORIES_SET;
let dirs2 = &*SKIP_DIRECTORIES_SET;
assert!(Arc::ptr_eq(dirs1, dirs2));
}
}