simple_fs/
glob.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use crate::{Error, Result};
use globset::{Glob, GlobSet, GlobSetBuilder};

pub const DEFAULT_EXCLUDE_GLOBS: &[&str] = &["**/.git", "**/target", "**/node_modules"];

pub fn get_glob_set(globs: &[&str]) -> Result<GlobSet> {
	let mut builder = GlobSetBuilder::new();
	for &glob_str in globs {
		let glob = Glob::new(glob_str).map_err(|e| Error::GlobCantNew {
			glob: glob_str.to_string(),
			cause: e,
		})?;
		builder.add(glob);
	}

	let glob_set = builder.build().map_err(|e| Error::GlobSetCantBuild {
		globs: globs.iter().map(|&v| v.to_string()).collect(),
		cause: e,
	})?;

	Ok(glob_set)
}